有一些像这样的问题,但提供的解决方案都没有。 构建具有两个模块的应用程序时,Build会从标题中输出错误。其中一个模块具有本机代码文件。
我检查了很多线程,所有这些线程都建议包含-llog。 类似的帖子here。
我的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com_couchbase_touchdb_TDCollateJSON
LOCAL_SRC_FILES := com_couchbase_touchdb_TDCollateJSON.cpp
LOCAL_LDLIBS := -landroid -llog -ldl -L$(LOCAL_PATH)
include $(BUILD_SHARED_LIBRARY)
我还在.cpp文件中包含了标题<android/log.h>
,但我仍然遇到同样的错误。
答案 0 :(得分:1)
很可能不是__android_log_print
,而是其他字体看起来类似的东西,例如__andriod_log_prlnt
(2个拼写错误)。在一个C ++项目中,有一个名称错误,可能其中一个文件(甚至可能是.h文件)错过了标题(也就是说,#includes的顺序可能很重要)。 IIRC -L
/ -l
开关的顺序也很重要,但可能不是这里的情况。
我将从NDK中的hello-jni示例开始,并向其添加日志记录;然后,我会逐渐添加应用程序代码。如果之后一切正常,那么下一步就是将jni/
文件夹移动到您的应用程序项目中,否则您将知道在它崩溃之前您采取了哪些步骤。
以防万一:
#include <android/log.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "~~~~~~", __VA_ARGS__)
#define DLOG(...) __android_log_print(ANDROID_LOG_DEBUG , "~~~~~~", __VA_ARGS__)