3

我正在尝试构建 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
4

1 回答 1

2

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

LOCAL_STATIC_LIBRARIES:应该链接到该模块的静态库模块列表(使用 BUILD_STATIC_LIBRARY 构建)。这仅在共享库模块中才有意义。

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

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

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

更新 09/01/2017

可以在此处找到有关预建库的文档

于 2012-07-23T15:01:39.627 回答