我想从C++调用的Java方法传回一个字符串。我无法找出应该调用哪个JNI函数来访问该方法,并返回一个jstring值。如何访问在JNI中从C++返回java.lang.String的Java方法的返回值?
我的代码如下:
C++部分
main() {
jclass cls;
jmethodID mid;
jstring rv;
/** ... omitted code ... */
cls = env->FindClass("ClassifierWrapper");
mid = env->GetMethodID(cls, "getString","()Ljava/lang/String");
rv = env->CallStatic<TYPE>Method(cls, mid, 0);
const char *strReturn = env->GetStringUTFChars(env, rv, 0);
env->ReleaseStringUTFChars(rv, strReturn);
}
Java代码的
public class ClassifierWrapper {
public String getString() { return "TEST";}
}
方法签名(来自 “javap的-s类”)
public java.lang.String getString();
Signature:()Ljava/lang/String;
类名称应与两端;如:()Ljava/lang/String; – barwnikk 2016-09-04 09:53:02
无法初始化类型为'jstring'(aka'_jstring *') 的类型为'jobject'(aka'_jobject *')的变量 jstring jMacAddr = env-> CallObjectMethod(producDescription, – AdiAtAnd 2016-09-27 03:09:12
just jobject to jstring as如下: rv =(jstring)(env-> CallObjectMethod(classifierObj,getStringMethod,0)); – 2016-12-06 11:47:23