使用JNI将字符串数组从java传递给C.

mas*_*say 30 c java java-native-interface

我有一个字符串数组一样{"myname","yourname","hisname"},我想这个数组发送到ç使用JNI.我找不到任何明确的解决方案.我试图把这个字符串作为一个chararray但没有成功.

有没有办法做到这一点?

小智 80

你可以编写一个简单的函数来获取一个jobjectArray对象,将每个对象强制转换为jstring然后调用GetStringUTFChars它.

像这样:

void MyJNIFunction(JNIEnv *env, jobject object, jobjectArray stringArray) {

    int stringCount = env->GetArrayLength(stringArray);

    for (int i=0; i<stringCount; i++) {
        jstring string = (jstring) (env->GetObjectArrayElement(stringArray, i));
        const char *rawString = env->GetStringUTFChars(string, 0);
        // Don't forget to call `ReleaseStringUTFChars` when you're done.
    }
}
Run Code Online (Sandbox Code Playgroud)


Qua*_*nic 9

是的,有一种方法.您可以String[]从Java端传递到您的本机方法,这将作为一个C/C++方面传递给您jobjectArray.然后,您将使用GetObjectArrayElement()获取jstring给定索引,然后使用GetStringUTFChars()GetStringChars()获取指向基础字符串数据的C/C++指针.

如果您不了解它,JNI Book是一个有价值的参考.

  • "JNI Book"链接已损坏. (2认同)