【发布时间】:2013-07-03 12:31:44
【问题描述】:
我正在尝试编译一个 NDK 项目。因为我必须使用外部.so-文件。 它被编译为名称 libpcan.so.0.6 因为 makefile 正在编译这个库是:
LDNAME = libpcan.so
SONAME = $(LDNAME).0
TARGET = $(SONAME).6
我的 receivetest.c 文件需要这个 libpcan.so.0.6 包含的函数。 android-toolchain 不接受文件结尾的“.so.0.6”,所以我将文件重命名为 libpcan.so 。我的 Android.mk 将此 .so 作为 PREBUILD_SHARED_LIBRARY 来编译我的 receivetest.so 。工具链运行正常。
当我启动我的 Android 应用程序时,我收到错误消息:
java.lang.ExceptionInInitializerError
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]: 36 could not load needed library 'libpcan.so.0' for 'libreceivetest.so' (load_library[1093]: Library 'libpcan.so.0' not found)*
所以我的问题是:我可以在创建 .so 文件后重命名它而不引起问题吗? 为什么应用程序要加载 libpcan.so.0,在将 .so.0.6 重命名为 .so 并且这个 .so 在 ndk-toolchain 中运行良好?
【问题讨论】:
-
AFAIK,您应该可以根据自己的方便重命名库。
-
你能发布你的 mk 文件吗?
标签: android android-ndk makefile