Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符数组从java返回到C-JNI_Java_C_Java Native Interface - Fatal编程技术网

将字符数组从java返回到C-JNI

将字符数组从java返回到C-JNI,java,c,java-native-interface,Java,C,Java Native Interface,我有一个Java对象存储。我的C程序用java存储数据(以字符数组的形式)。现在我希望从我的存储中检索数据。我找不到任何返回字符数组的函数调用。我如何才能做到这一点?您需要使用JNI提供的各种API之一,可能是getChararYelements() 下面是一个示例,取自将字节数组从Java检索到C的工作代码(该代码是Java调用的函数,但机制相同) 您需要使用JNI提供的各种API之一,可能是GetCharArrayElements() 下面是一个示例,取自将字节数组从Java检索到C的工作代

我有一个Java对象存储。我的C程序用java存储数据(以字符数组的形式)。现在我希望从我的存储中检索数据。我找不到任何返回字符数组的函数调用。我如何才能做到这一点?

您需要使用JNI提供的各种API之一,可能是getChararYelements()

下面是一个示例,取自将字节数组从Java检索到C的工作代码(该代码是Java调用的函数,但机制相同)


您需要使用JNI提供的各种API之一,可能是GetCharArrayElements()

下面是一个示例,取自将字节数组从Java检索到C的工作代码(该代码是Java调用的函数,但机制相同)


你的问题还需要澄清一下。您的C程序如何在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 */
    }