2017-03-26 12 views
0

javacppのopenblasプリセットをAndroidアプリケーションに統合しようとしています。 Githubで利用可能な私の問題を説明するテストアプリを作成しました。アプリはMainActivity.onCreate()メソッド内のhttps://github.com/bytedeco/javacpp-presets/tree/master/openblasからサンプルコードを実行するだけです。次のようにAndroidでjavacpp + 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) 
     ... 

私はいくつかの依存関係が欠落しているだろうか?

答えて

0

Mavenのやり方に慣れていないし、エラーを再現できませんでした。

このエラーは、AndroidがリンクされていないJNIエクスポートされたC++関数を見つけようとしていることを示しています。

Android Studioでプロジェクトを簡単に作成すると、リンカーエラー:'e/linker: library "/system/lib/libdl.so"'が表示されます。これは、実行時にjniopenblas.soが見つからないためです。

私はlibjniopenblas.soを抽出し、libopenblas.soと明示的に(ディレクトリを作成した)に入れて、[アプリ] build.gradleに指定されたabiFilters: 'armeabi-v7a'を追加すると、エラーが解決され、プロジェクトをコンパイルして実行されます。

多分 - Androidはopenblas-android-arm.jarの中に静的ライブラリを見つけることができませんか?

関連する問題