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() 행에서 충돌합니다. 이 프로그램에 어떤 문제가 있습니까?
정말 당신을 배열이란 뜻이야? C 함수는 배열을 받아들이도록 작성되었으며, Java가'List' 객체를 전달하면 어떤 시점에서 충돌이 일어날 것으로 예상 할 수 있습니다. – Joni