据我所知,我不能从C++中调用从Java字符串数组返回的方法,所以只有解决这个问题的方法是循环调用方法,它将返回一个数组元素,但是如何将它们存储在C++数组中?如何从C++调用Java方法(java返回String [])?
在Java我有方法:
public static String getData(int index){ return arry[index]; }
和在C++:
char * args[10];
for (int i = 0; i < arrayLength; i ++) {
jmethodID mid = env->GetStaticMethodID(INF.cls_JSox, "getData",(I)Ljava/lang/String;");
jobject result = env->CallStaticObjectMethod(cls, mid, num, i);
const char *nativeString = env->GetStringUTFChars((jstring) result, 0);
const size_t len = strlen(nativeString);
cout << "copying... \n";
strncpy(args[i], nativeString, len);
env->ReleaseStringUTFChars((jstring)result, nativeString);
}
但当i
= 1我发现了存储器冲突错误在Java中。我怎样才能正确地从收到的字符串中复制数据到char * args[10]
?从Java传递的每个字符串的长度约为3-5个字符。
绝对有可能使用JNI来调用返回字符串数组的Java方法。 –
'GetStaticMethodID'中的'INF.cls_JSox'是否与CallStaticObjectMethod中的'cls'指向相同的类? – jogabonito