我想通过C代码
中的JNI层传递以下指针数组char *result[MAXTEST][MAXRESPONSE] = {
{ "12", "12", "" },
{ "8", "3", "" },
{ "29", "70", "" },
{ "5", "2", "" },
{ "42", "42", "" }
};
在java代码中,我写了以下声明
public static native String[][] getResult();
我很困惑如何通过JNI层将该数组传递给Java代码???以下是JNI层描述
JNIEXPORT jobjectArray JNICALL Java_com_example_CheckResult_getResult
(JNIEnv *env, jclass thiz) {
Confused over here ????
}
答案 0 :(得分:1)
最后在jop的共享link上工作了几个小时后,我可以解决我的问题。代码如下:
JNIEXPORT jobjectArray JNICALL Java_com_example_CheckResult_getResult(JNIEnv *env, jclass thiz) {
jboolean flag = JNI_TRUE;
jclass stringClass = (*env)->FindClass(env, "java/lang/String");
jobjectArray row;
jobjectArray rows;
jsize i, j;
for(i=0; i<5; i++) {
row = (*env)->NewObjectArray(env, MAXRESPONSE, stringClass, 0);
for(j=0; j<3; j++) {
(*env)->SetObjectArrayElement(env, row, j, (*env)->NewStringUTF(env, userResponse[i][j]));
}
if(flag == JNI_TRUE) {
flag = JNI_FALSE;
rows = (*env)->NewObjectArray(env, MAXTEST, (*env)->GetObjectClass(env, row), 0);
}
(*env)->SetObjectArrayElement(env, rows, i, row);
}
return rows;
}