Android之java.lang.UnsatisfiedLinkError(Failed to register native method ***callMethod1())解决办法
1、问题
Failed to register native method com.example.chenyu.test.JniClient.callMethod1()
java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/com.example.chenyu.test-2/lib/arm/libFirstJni.so"
如下图
2、解决办法
原因:是因为我注册的时候参数写错了
函数是这样的
void callMethod1(JNIEnv* env, jobject thiz) {
LOGD(TAG, "this is jni call1");
}我注册的时候是这样写的
/**
* 方法对应表
*/
static JNINativeMethod gMethods[] = {
{"getStr", "()Ljava/lang/String;", (void*)get_str},
{"addInt", "(II)I", (void*)add_int},
{"callMethod1", "()", (void*)callMethod1},
{"callMethod2", "()", (void*)callMethod2},
{"callMethod3", "()", (void*)callMethod3},
};没有加上返回值,应该是"()V",要记住返回值是V 对应java和c里面的void、void 改成下面即可
static JNINativeMethod gMethods[] = {
{"getStr", "()Ljava/lang/String;", (void*)get_str},
{"addInt", "(II)I", (void*)add_int},
{"callMethod1", "()V", (void*)callMethod1},
{"callMethod2", "()V", (void*)callMethod2},
{"callMethod3", "()V", (void*)callMethod3},
};
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
