2014-07-02 138 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