我需要通過JNI將字符串列表從Java傳遞到C. 我的Java程序傳遞一個List參數,C程序接受一個列表。將字符串列表從Java傳遞到C
下面是我試過的代碼。
JNIEXPORT jobject JNICALL Java_jni_CallJNIfunction(JNIEnv *env,
jobjectArray jParameters){
list<const char*> cParameters;
jsize stringCount = env->GetArrayLength(jParameters);
for (int i=0; i<stringCount; i++) {
jstring arrElement = (jstring) (env->GetObjectArrayElement(jParameters, i));
const char* nativeElement = env->GetStringUTFChars(arrElement, NULL);
cParameters.push_back(nativeElement);
env->ReleaseStringUTFChars(arrElement, nativeElement);
}
CallCfunction(cParameters);
}
但是我的JVM在GetStringUTFChars()行崩潰。 這個程序有什麼問題?
當你說你傳遞的參數的'List',你真的意味着一個數組? C函數似乎被寫爲接受一個數組,如果Java傳遞一個'List'對象,你可以期望它在某個時刻崩潰。 – Joni