未定义的__android_log_print错误引用

时间:2014-07-02 14:14:08

标签: java android android-ndk android-studio build-error

有一些像这样的问题,但提供的解决方案都没有。 构建具有两个模块的应用程序时,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>,但我仍然遇到同样的错误。

1 个答案:

答案 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__)