入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Android之java.lang.UnsatisfiedLinkError(Failed to register native method ***callMethod1())解决办法

创建时间:2017-05-13 投稿人: 浏览次数:3071

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。