网上说了两种原因:
java.lang.UnsatisfiedLinkError: Native method not found:
经过排查发现是两个问题:
1) Android.mk里面: 最后生成的时候 LOCAL_MODULE := testcmmb_jni 千万不能写成 libtestcmmb_jni!!!!虽然编译出来的文件名称貌似相同
2) C++ 的代码里面: extern "C"{ 。。。 } 这是因为生成的二进制文件中,C和C++的符号表不相同造成的。Jni是按照C的生成规则去找函数的, 所以要加上extern C使编译器把函数按照C的规则编译 这样才能被JAVA调用
我说说我遇到的第三种,
被坑惨了...
Android应用开发揭秘.pdf
,写的代码例子,全是包含"_"的
Examples_04_04
com.yarin.android.Examples_08_08;
jstring Java_com_yarin_android_Examples_08_04_Activity01_StringFromJNI1( JNIEnv* env, jobject thiz );
这个会有严重问题是,导致 UnsatisfiedLinkError