2016-05-27 9 views
0

おはよう。私はライブラリを持っています.soはx86 Androidでうまくいきます。 Javaでこのライブラリを使用するには?JavaコードでAndroid .soを使用

System.getProperty("sun.arch.data.model").equals("32"); 

true

static 
    { 
     System.loadLibrary("full/path/to/library/liblibrary.so"); 
    } 

Exception in thread "main" java.lang.UnsatisfiedLinkError: no full/path/to/library/liblibrary.so in java.library.path

多分それは、Android NDKからいくつかのライブラリを使用しますか?

+1

、あなたは '使用することができます'' 'loadLibrary'''の代わりに' 'System.load''を使います。 '' loadLibrary'''に入れた文字列は、プラットフォーム固有のライブラリ名にマップされます。 '' System.mapLibraryName'''を呼び出すことで、その結果を見ることができます。 iirc、Linux上では、 "library"は "liblibrary.so"にマップされます。 –

+0

Thx。 System.load - 仕事。しかし、今では新しいエラー: スレッド "main"の例外java.lang.UnsatisfiedLinkError:library.so:AMD 64ビットプラットフォームでこの.dll(マシンコード= 0x34)を読み込めません。 x86 JVM スレッド "main"の例外java.lang.UnsatisfiedLinkError:library.so:IA 32ビットプラットフォーム上でこの.dll(マシンコード= 0x34)をロードできません – user3504724

+0

私はそれを助けることはできません...ごめんなさい。 –

答えて

0

System.loadLibraryの引数は、プログラマが任意に選択したライブラリ名です。このシステムは、ライブラリ名をネイティブのライブラリ名に変換するための、プラットフォーム固有の標準的なアプローチに従います。 Win32のシステムはpkg_Cls.dllに同じpkg_Cls名を変換しながらたとえば、Solarisシステムでは、libpkg_Cls.soに名前pkg_Clsを変換

より多くのあなたが完全なパスを持っている場合は、ここからat Oracle's JNI documentation

関連する問題