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

来源:互联网 发布:百度软件研发工程师 编辑:程序博客网 时间:2024/06/05 21:57

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},};

0 0
原创粉丝点击