最近升级到 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/ 目录中。
如果有人能为我阐明这一点,我将不胜感激。谢谢!
您是否使用 ndk-build 构建库?
如果没有,我通常将使用独立工具链构建的库保留在 jni 文件夹中,并直接按名称引用它们LOCAL_LDLIBS
:
LOCAL_LDLIBS := libvoiceengine.a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)