2014-07-02 110 views
0

有一些像这样的问题,但没有任何提供的解决方案的伎俩。 在构建包含两个模块的应用程序时,Build会从标题中输出错误。其中一个模块具有本机代码文件。未定义的引用__android_log_print错误

我检查了很多线程,他们都建议包含-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) 

我也有头<android/log.h>纳入.cpp文件,但我仍然得到同样的错误。

+0

请张贴完整的清洁日志的'NDK建造V = 1'。 –

+0

@AlexCohn,我暂停了一下这个项目。感谢您的帮助。 – mdzeko

回答

1

最有可能的不是__android_log_print,而是其他字体看起来很相似,例如__andriod_log_prlnt(2个拼写错误)。在一个C++项目中,有名称变形,可能其中一个文件(甚至可能是一个.h文件)错过了头文件(也就是#include的顺序可能很重要)。 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__) 
+0

谢谢@ 18446744073709551615。因为我有另一个更重要的项目,所以我暂停了一下这个项目。只要我检查一下,你会收到通知。再次谢谢你。 – mdzeko