jmethodID mid = env->GetMethodID(cls, "methodCallBack", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String)V"); if (mid == NULL) { LOGI("!!!!!!!!!!!NOT FIND!!!!!!!!!!!"); return; /* method not found */ }
1.以上是JNI的C++供java使用的接口代码中回调部分。C++指定对应java方法methodCallBack,后面是该方法对应的传参类型,三个String型,最后是返回值,V是void。
2.运行一直报no method,not found的错,对应java却有该方法。
3.几经查找发现, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String)V",错误在这。String在jni中表示为Ljava/lang/String; 分号不是隔开参数的,而是String类型特带的
4.所以改写成 "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",问题解决