最近升級到NDK r5b,並且構建失敗,並且對位於靜態庫中的函數執行「未定義引用」。使用Android NDK連接靜態庫時遇到問題r5b
以下是錯誤
/home/brian/workspace/VoiceEngineDemo/obj/local/armeabi-v7a/objs-debug/voiceenginejni/voice_engine_jni.o: In function `initVE':
/home/brian/workspace/VoiceEngineDemo/jni/voice_engine_jni.c:944: undefined reference to `VE_ADT_create'
這似乎鏈接過程中沒有加載,即使它在Android.mk定義如下靜態模塊:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := voiceenginejni
LOCAL_SRC_FILES := voice_engine_jni.c printing.c jaudio.c etime.c
LOCAL_CFLAGS := -D __arm -D ANDROID -D USE_AEC_DEFAULTS -D USE_EC_DEFAULTS -D _DEBUG -D EC_VARIANT=EC_VARIANT_NEC -D AECG1_5_ENABLE
LOCAL_STATIC_LIBRARIES := libvoiceengine libcpufeatures libaecg2
LOCAL_LDLIBS := -llog -ldl
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cpufeatures)
的VE_ADT_create功能位於libvoiceengine.a中,該文件位於/ obj/local/armeabi-v7a /目錄中。
我會很感激,如果任何人都可以爲我闡明這一點。謝謝!
http://stackoverflow.com/questions/7332679/cant-create-shared-library-with-static-inside – 2011-09-08 11:52:44