Возrotation массива char из java в C – JNI

У меня есть хранилище объектов на Java. Моя программа C хранит данные (в виде массива символов) в java. Теперь я хочу получить данные из своего магазина. Я не могу найти вызов функции, который возвращает мне массив char. Как я могу это сделать?

Вам нужно использовать один из различных API, предоставляемых JNI, возможно, GetCharArrayElements ().

Ниже приведен пример, взятый из рабочего кода, который извлекает массив байтов из Java в C (код – это функция, которая вызывается Java, но механики идентичны).

JNIEXPORT void JNICALL Java_xxx_jniEnqueue(JNIEnv *jep,jobject thsObj, jlong handle, jbyteArray jvaKey, jint jvaKeyOfs, jint jvaKeyLen, jbyteArray jvaData, jint jvaDtaOfs, jint jvaDtaLen) { jbyte *jniKey,*jniData; jthrowable escObj; jniKey=(*jep)->GetByteArrayElements(jep,jvaKey,0); jniData=(*jep)->GetByteArrayElements(jep,jvaData,0); ... memcpy(odp->enqpfx->Msg,jniKey+jvaKeyOfs,(vuns)jvaKeyLen); /* key badly named Msg */ ... // enqueue data using key if(/* enqueue failed */) { (*jep)->ReleaseByteArrayElements(jep,jvaKey ,jniKey ,JNI_ABORT); /* abort to not copy back */ (*jep)->ReleaseByteArrayElements(jep,jvaData,jniData,JNI_ABORT); /* abort to not copy back */ throwEscapeObject(jep,escObj); return; } (*jep)->ReleaseByteArrayElements(jep,jvaKey ,jniKey ,JNI_ABORT); /* abort to not copy back */ (*jep)->ReleaseByteArrayElements(jep,jvaData,jniData,JNI_ABORT); /* abort to not copy back */ }