【发布时间】:2014-08-20 02:22:43
【问题描述】:
我有一个使用 libjpeg-turbo 的 Android 应用程序的本机库。我正在使用 NDK 编译库和 libjpeg-turbo。一切似乎都可以正常编译和安装(我在手机上的 /data/data/com.company.app/lib 中看到所有 .so 文件),我正在打电话
System.loadLibrary("jpeg");
System.loadLibrary("zmq");
System.loadLibrary("MySuperLib");
System.loadLibrary("jnilibwrapper");
E/AndroidRuntime(8186):java.lang.UnsatisfiedLinkError:dlopen 失败: 无法加载“libjnilibrapper.so”所需的库“libMySuperLib.so”; 导致无法加载所需的库“libjpeg.so.62” “libMySuperLib.so”;由找不到库“libjpeg.so.62”引起
我找到了这个解决方法,像这样创建库的符号链接让我通过了这个错误
root@klteatt:/data/data/com.company.app/lib # ln -s libjpeg.so libjpeg.so.62
但这当然不是解决方案。
我们哪里会出错?为什么它特别想要 libjpeg.so.62?
【问题讨论】:
-
“libMySuperLib.so”与“libjpeg.so.62”相关联。如果您使用
ndk-build,这是非常不寻常的。但是,如果您将独立工具链与 Unix 风格的 makefile 一起使用,那么这样的结果就不会出乎意料。在后一种情况下,您可能需要对 make 文件或配置脚本进行一些编辑。 -
@AlexCohn 是的,我们使用的是 libjpeg-turbo 的自动工具,然后是标准的 makefile。我会让解决我们问题的同事提交详细的答案。谢谢!
标签: java android android-ndk loadlibrary libjpeg-turbo