Android NDK:未定义引用

Android NDK:undefined reference to ' '

本文关键字:引用 未定义 NDK Android      更新时间:2023-10-16

我正在尝试构建g729编解码器的库文件。我有这个编解码器的来源,并尝试使用Android NDK进行构建
几乎所有的对象文件都是建立的,但最后我得到了这个错误
但我被这个错误卡住了。有人能解释这个错误的含义吗?我该怎么解决这个问题

./obj/local/armeabi-v7a/objs/g729_jni/g729/cod_ld8a.o: In function `Coder_ld8a':
/root/g729/jni/g729/cod_ld8a.c:267: undefined reference to `Pitch_ol_fast'
/root/g729/jni/g729/cod_ld8a.c:325: undefined reference to `Pitch_fr3_fast'
/root/g729/jni/g729/cod_ld8a.c:328: undefined reference to `Enc_lag3'
/root/g729/jni/g729/cod_ld8a.c:344: undefined reference to `G_pitch'
collect2: ld returned 1 exit status

感谢

编辑我已经解决了这个错误,但是否可行?我在Android.mk 中添加了这一行

LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

如果您正在编译源代码并希望链接生成的库,则可以在Android.mk文件中使用以下变量之一

LOCAL_STATIC_LIBRARIES:静态库模块列表(使用BUILD_static_LIBRARRY构建)应该链接到此模块。这只有在共享库模块。

LOCAL_SHARED_LIBRARIES:此模块在运行时依赖的共享库模块的列表。这在链接时是必要的,并嵌入相应的信息在生成的文件中。

有关更多详细信息,请查看您可以在NDK文件夹中找到的android NDK文档。

否则,如果你必须链接一个预构建的库,在AndroidNDK文档中有一个部分告诉你如何实现结果。这些文件的在线版本也在这里(预构建)。

更新日期:2017年1月9日

关于预构建库的文档可以在这里找到