Android ndk 调用java方法时,从c++;android中的ndk
我在java中有以下一种方法:Android ndk 调用java方法时,从c++;android中的ndk,android-ndk,Android Ndk,我在java中有以下一种方法: public native String jniStringMethod(); public String stringMethod(String s) { Log.d("Testing", "String:" + s); return s; } 我正在尝试以以下方式调用cpp文件中jnitringmethod()中的“stringMethod”方法: jstring Java_ashok_learning_ndk_SampleNDKActivity_
public native String jniStringMethod();
public String stringMethod(String s) {
Log.d("Testing", "String:" + s);
return s;
}
我正在尝试以以下方式调用cpp文件中jnitringmethod()
中的“stringMethod”方法:
jstring Java_ashok_learning_ndk_SampleNDKActivity_jniStringMethod(JNIEnv *env,
jobject obj) {
jstring jstr = env->NewStringUTF("This comes from jni string .");
//jclass clazz = env->GetObjectClass(obj);
jclass clazz = env->FindClass("ashok/learning/ndk/SampleNDKActivity");
if (0 == clazz) {
LOG("clazz class not found!");
}
jmethodID messageMe = env->GetMethodID(clazz, "stringMethod", "(Ljava/lang/String;)Ljava/lang/String;");
if (0 == messageMe) {
LOG("messageMe method not found!");
}
jobject result = env->CallObjectMethod(obj, messageMe, jstr);
LOG("result: %d", result);
const char* str = env->GetStringUTFChars((jstring)result, NULL); // should be released but what a heck, it's a tutorial :)
printf("%s\n", str);
return env->NewStringUTF(str);
}
但它没有被调用..我得到的日志是“messageMe method not found!”,这意味着该方法与签名不匹配…有人可以建议我的错误吗?您的签名没有问题。即使
messageMe
为空,您确定代码没有正确执行吗?我碰巧发现我的代码运行良好,尽管jmethodID
为空。您的签名没有问题。即使messageMe
为空,您确定代码没有正确执行吗?尽管jmethodID
为空,但我的代码运行良好。jobject result=env->CallObjectMethod(obj,messageMe,jstr);日志(“结果:%d”,结果);const char*str=env->GetStringUTFChars((jstring)结果,NULL);//应该发布,但真见鬼,这是一个教程:)printf(“%s\n”,str)代码>这些行帮助我jobject result=env->CallObjectMethod(obj、messageMe、jstr);日志(“结果:%d”,结果);const char*str=env->GetStringUTFChars((jstring)结果,NULL);//应该发布,但真见鬼,这是一个教程:)printf(“%s\n”,str)代码>这些行帮助我