概要:
该库(称为 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
.
问题:
正如他们在此常见问题解答中建议的那样,我检查了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
...
可能是什么问题,我该如何避免这个异常?
谢谢是提前。