概要:
ライブラリ (myEngine.so と呼びます) は、jni を使用してネイティブ c/c++ コードをラップし、Java ネイティブ メソッドへのインターフェイスを提供します。ndk-build現在、Android ndkのスクリプトでビルドしています。
dalvikvm のログによると、読み込みSystem.loadLibrary( "myEngine" );は正常に行われておりjava.lang.UnsatisfiedLinkError、次の種類のメッセージと共に例外が発生しています: No implementation found for native LFoo;.myfunc()V.
問題:この FAQで
推奨されているように、出力を確認nm myEngine.soしたところ、「シンボルなし」と表示されました。修飾子のすべての jni コードをチェックしたので、これは私には奇妙に見えますが、問題ありませんJNIEXPORT。ただし、readelf -Ws myEngine.so次のように、この関数の名前がマングルされていない正しい(?)シンボルテーブルが表示されます。
Symbol table .dynsym contains 3237 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 0003c0d0 0 SECTION LOCAL DEFAULT 7
2: 0027e078 0 SECTION LOCAL DEFAULT 12
...
56: 0003d3c9 36 FUNC GLOBAL DEFAULT 7 Java_Foo_myfunc
...
何が問題になる可能性がありますか? また、この例外を回避するにはどうすればよいですか?
よろしくお願いします。