2017-11-14 14 views
0

を失敗しました:のAndroid NDK:dlopenのは、私はそれが言う奇妙なエラー持って

java.lang.UnsatisfiedLinkError: dlopen failed: cannot find "./obj/local/armeabi-v7a/libsharedlibrary.so" from verneed[1] in DT_NEEDED list for "/data/data/com.my.app/cache/libnative.so" 

を私は多くのことを試してみましたが、私はそれを理解していません。誰かが私を助けてくれることを願っています!前もって感謝します!

編集: this質問の二重ではありませんので、同じエラーではありません。その質問に対する答えは私を助けません...

+0

[Android NDK:java.lang.UnsatisfiedLinkError:dlopenの取得に失敗しました:「libffmpeg.so」で参照されているシンボル「signal」を見つけることができません](https://stackoverflow.com/questions/28740315/android-ndk -getting-java-lang-unsatisfiedlinkerror-dlopen-failed-can not-loca) – Zoe

+0

これは重複していません。 –

答えて

1

libsharedlibrary.soはSONAMEの項目がありません。あなたのシステムにreadelfがを持っていない場合、それは$ NDK /ツールチェーンとしてNDKで提供されていることを

$ readelf -dW libnative.so | grep NEEDED | grep libsharedlibrary 
0x0000000000000001 (NEEDED)    Shared library: [./obj/local/armeabi-v7a/libsharedlibrary.so] 

ノート/腕のlinux-androideabi-4.9 /構築済み/:あなたは、おそらく現在、以下のようなものを参照してくださいlinux-x86_64/bin/arm-linux-androideabi-readelf(OSに合わせてパスを調整します)。ここのアーキテクチャは実際問題ではないことに注意してください。 readelfはマルチアーチツールです。すべてのツールチェーンのreadelfは正常に動作します。

何libsharedlibrary.soがSONAMEで構築された場合は、表示されるはずは次のとおりです。

$ readelf -dW libnative.so | grep NEEDED | grep libsharedlibrary 
0x0000000000000001 (NEEDED)    Shared library: [libsharedlibrary.so] 

あなたはlibsharedlibrary.soで次のように表示されるはずです。

$ readelf -dW libsharedlibrary.so | grep SONAME 
0x000000000000000e (SONAME)    Library soname: [libsharedlibrary.so] 

問題がlibsharedlibrary.soだったということです-Wl,-soname,libsharedlibrary.so ldflagで構築されていません。 ndk-buildとCMakeがそれを行いますが、スタンドアローンのツールチェーンやカスタムビルドシステムを使用している場合は、自分で提供する必要があります。

+1

あなたは正しいですが、以前に問題を修正しました。それに答えるのを忘れました。あなたの答えは受け入れられます。 –

関連する問題