【发布时间】:2012-10-06 03:20:01
【问题描述】:
我需要通过 JNI 将字符串列表从 Java 传递到 C。 我的 Java 程序传递一个 List 参数,而 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对象,您可以预期它会在某个时候崩溃。
标签: java c eclipse list java-native-interface