无法加载库soinfo_relocate(linker.cpp:975):找不到符号" log2f"由" libvlfeat.so"引用

时间:2015-09-01 08:47:08

标签: android c++ gcc android-ndk

我正在开发一个使用原生C的Android应用程序是核心处理。我使用NDKr10从本机代码和成功构建库。但是当我尝试加载libs时,会显示错误:

Cannot load library soinfo_relocate(linker.cpp:975): cannot locate symbol "log2f" referenced by "libvlfeat.so"...

我发现有些资源说这个错误是由gcc编译器和Android目标版本引起的,但是我不确定。(我的目标SDK是21)。

更新:我的应用在api 21设备上正常工作,但较低版本显示错误。

有人知道这个问题吗?请给我一个解决方法来解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:0)

您必须按顺序加载.so库以解决它们之间的依赖关系。也就是说,您必须对加载顺序进行硬编码。

有关Android.mk的一些知识可能会找到hereherehere。 (但如果您的项目成功编译,您的Android.mk可能会正常工作。)

有一个问题是。libs/armeabilibs/armeabi-v7a中的.so库没有合并。也就是说,如果您只在armeabi版本中有一些预编译的库,那么编译armeabi-v7a的库是没有用的(因为预编译的armeabi库不会实测值)。