【问题标题】:Using javacpp + openblas in Android在 Android 中使用 javacpp + openblas
【发布时间】:2017-03-26 21:43:00
【问题描述】:

我正在尝试将 javacpp 的 openblas 预设集成到我的 Android 应用程序中。我创建了一个测试应用程序来说明我在Github 中的问题。该应用程序只需在 MainActivity.onCreate() 方法中运行来自 https://github.com/bytedeco/javacpp-presets/tree/master/openblas 的示例代码。

我的gradle构建依赖如下:

compile 'org.bytedeco:javacpp:1.3.2'
compile 'org.bytedeco.javacpp-presets:openblas:0.2.19-1.3'
compile group: 'org.bytedeco.javacpp-presets', name: 'openblas', version: '0.2.19-1.3', classifier: 'android-x86'
compile group: 'org.bytedeco.javacpp-presets', name: 'openblas', version: '0.2.19-1.3', classifier: 'android-arm'

当我在模拟器中运行应用程序时,我得到:

     java.lang.UnsatisfiedLinkError: No implementation found for int org.bytedeco.javacpp.openblas.LAPACKE_dgels(int, byte, int, int, int, double[], int, double[], int) (tried Java_org_bytedeco_javacpp_openblas_LAPACKE_1dgels and Java_org_bytedeco_javacpp_openblas_LAPACKE_1dgels__IBIII_3DI_3DI)
      at org.bytedeco.javacpp.openblas.LAPACKE_dgels(Native Method)
      at org.androidopenblas.ExampleDGELSrowmajor.runExample(MainActivity.java:80)
      at org.androidopenblas.MainActivity.onCreate(MainActivity.java:19)
      ...

我是否缺少一些依赖项?

【问题讨论】:

    标签: android openblas javacpp


    【解决方案1】:

    我对Maven的处理方式不是太熟悉,无法重现错误。

    错误提示 Android 试图定位一个未链接的 JNI 导出的 c++ 函数。

    但是,如果我在 Android Studio 中简单地创建您的项目,则会收到链接器错误:'e/linker: library "/system/lib/libdl.so"'。这是因为 Android 在运行时没有找到 jniopenblas.so

    如果我提取libjniopenblas.solibopenblas.so 并将它们显式放入app/main/jniLibs/armeabi-v7a/(创建目录)并将指定的abiFilters: 'armeabi-v7a' 添加到[app]build.gradle,错误解决并且项目编译并运行。

    所以也许 - Android 无法在 openblas-android-arm.jar 中找到静态库?

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多