據我所知,我不能從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