代码之家  ›  专栏  ›  技术社区  ›  chile

.apk保存此库时,libopencv.core.so的UnsatisfiedLinkError

  •  1
  • chile  · 技术社区  · 10 年前

    我想在Android上的应用程序中使用JavaCv。 因此,我遵循了以下建议: https://github.com/bytedeco/javacv 关于如何安装Android 2.2或更高版本。因此,可以在下面找到以下库 \libs\armeabi库 : libjniopencv_core.so libopencv_core.so

    两个库的所有类都存在于my.apk的classes.dex文件中。 但我还是得到了以下例外:

    java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libopencv_core.so" needed by "libjniopencv_core.so"; caused by load_library(linker.cpp:745): library "libopencv_core.so" not found

    我尝试通过

    System.loadLibrary("libopencv_core")
    

    System.loadLibrary("opencv_core")
    

    结果相同。。

    任何关于如何解决这个问题的提示都将不胜感激。

    编辑1:

    我看了看哪些.so文件实际上可以在下面找到 /data/app-lib/ccc.android.myappname ...

    尽管libopencv.core.so和其他文件可以在 lib/armeabi/ 在my.apk中,只有其中一些可用于我的活动 /data/app-lib/ccc.android.myappname 。其他的只是因为一些未知的原因而被忽略了。

    有人能帮忙吗,我不知道发生了什么事。

    非常感谢。

    1 回复  |  直到 10 年前
        1
  •  1
  •   chile    10 年前

    这里是我找到的解决方案:

    我在Github上的JavaCv板上讨论了这个问题:

    https://github.com/bytedeco/javacv/issues/28

    该问题可能在下一版本中成为历史,但在此期间,请执行以下操作:

    在首次使用JavaCv之前,请执行以下操作:

    static {
            System.loadLibrary("tbb");
            System.loadLibrary("opencv_core");
            System.loadLibrary("jniopencv_core");
    }
    

    在某些设备(或场合)中,预期的装载顺序会混淆。。。