【发布时间】:2012-07-18 16:25:00
【问题描述】:
我正在尝试构建 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
【问题讨论】:
-
“未定义的引用”是链接器错误。您可能忘记在命令行中传递要链接的库。
-
好的,你能告诉我如何使用 NDK 在命令行中传递库吗?
-
对不起,我根本不知道 NDK。可能和往常一样,
-l<name>其中<name>是库的名称。您缺少哪个库,不知道。但是,如果 NDK 是/包含一种集成构建系统或 IDE,您将不会通过命令行调用编译器,而是会在某个项目文件中列出该库。 -
啊,感谢您的解释,但在这里,我什至无法理解我缺少哪个库文件!
标签: c++ c android-ndk linker-errors ld