簡介: 該庫(稱爲myEngine.so)使用jni來包裝原生c/C++代碼並提供java原生方法的接口。我目前使用android ndk的ndk-build
腳本構建它。Android ndk-built共享庫結果爲java.lang.UnsatisfiedLinkError
根據dalvikvm日誌,加載System.loadLibrary("myEngine");
運行良好,並且java.lang.UnsatisfiedLinkError
異常附帶以下類型的消息:No implementation found for native LFoo;.myfunc()V
。
問題: 當他們建議in this FAQ,我查nm myEngine.so
輸出,並說:「沒有符號」。這看起來很奇怪,因爲我檢查了JNIEXPORT
限定符的所有jni代碼,沒關係。 然而,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
...
這可能是一個問題,我該如何避免這種例外?
非常感謝。