gpt4 book ai didi

android-ndk - 无法在运行时在 android 应用程序中加载库

转载 作者:行者123 更新时间:2023-12-04 02:53:30 26 4
gpt4 key购买 nike

我正在开发 android 应用程序,其中我将 JNI 用于 native c 代码。
我在 android 2.0 版本和 ndkr3 上构建了这个应用程序,它运行良好。

现在,当我更改 android sdk 版本 1.5 和 api 版本 3 时,我遇到了无法打开库 libtest_demo.so 的问题。

05-13 16:54:23.603: INFO/dalvikvm(1211): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library

我把 libtest_demo.so 文件放在同一个地方/data/data/org.abc.test_demo/lib/libtest_demo.so 但仍然出现同样的问题。

在我的 java 文件中,我调用了 native 库,例如,
 System.loadLibrary("abc_jni");
System.loadLibrary("test_demo");

从 logcat 我看到两个库使用相同的内存地址。

这是 logcat 输出
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Added shared lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8
05-13 17:56:15.742: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libtest_demo.so 0x437317f8
05-13 17:56:15.752: INFO/dalvikvm(9897): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library

最佳答案

这个错误几乎总是说“找不到库”,这可能有很多原因。令人讨厌的是,在大多数情况下,它不是丢失的库,而是其他东西。我偶然发现的原因:

  • 目录中缺少库(显然),
  • 与您的库动态链接的库丢失,
  • 您的库使用的设备/模拟器上的系统库版本与您在编译时链接的版本不同(缺少符号等)

  • 我描述了一种在解决在模拟器上运行良好但无法在 Nexus One 上加载的库问题时对我有用的方法,也许这会对您有所帮助: http://mpigulski.blogspot.com/2010/09/debugging-dlopen-unsatisfiedlinkerror.html

    关于android-ndk - 无法在运行时在 android 应用程序中加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824820/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com