据我所知,我无法从C++调用返回Java字符串数组的方法,因此唯一的解决方案是循环调用方法,逐个返回数组元素,但是如何将它们存储在C++数组中呢?
在Java中,我有一个方法:
在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个字符。