我想從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