2017-04-07 10 views
2

私のネイティブライブラリをアンドロイドコードに統合する方法を解明しようとしています。私は単純なC++関数を作成し、デバイス上でコードを実行するとうまくいきます。しかし、私の現在の目標は、ユニット・テストENV(JUnitの)で動作させるためである、と私は問題に直面:動作しないSystem.loadLibrary("lib")ユニットテストENVで、ユニットテスト中の "java.lang.UnsatisfiedLinkError:* .so:依存ライブラリが見つかりません" env

だから、私は今、この System.load("/full/path/to/lib.so")にそれをcangeが、行が例外をスローする:

java.lang.UnsatisfiedLinkError: app\build\intermediates\cmake\debug\obj\x86_64\liblib.so: Can't find dependent libraries at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824) at java.lang.Runtime.load0(Runtime.java:809) at java.lang.System.load(System.java:1086)

パスが正しくあり、このパスのファイルが存在します。

libのx86ベースのバージョンへのパスを使用しようとしましたが、それでも同じ例外がスローされます。

私は最新のAndroid NDK、Clangツールチェーンを使用しています。Windows 7 64ビットベースのラップトップではユニットテストを実行しています。CPUはCore i7で、実行時のJavaバージョンも64ビットです。

この場合、どのような問題が発生する可能性がありますか?


は私ものx86/x86_64の* .soのファイルをコンパイル打ち鳴らす心の実際に持つ感情を持って、彼らはまだWindowsベースのenvでは無効であるが、私は、Linuxはすぐにこのアイデアをチェックするためにインストールされていません。 。

答えて

0

明らかに、このメッセージはあなたの* .soライブラリがターゲットプラットフォーム(あなたの場合はアンドロイド上)に表示されていない他のライブラリに依存することを示しています。
おそらく、あなたのライブラリはWindows APIのいくつかを使用しています。私はを検出することをお勧めしますのようなツールを使用してDependency Walker

関連する問題