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

2022-09-01 07:10:02

我有一个字符串数组,我正在尝试使用JNI将此数组发送到C。我找不到任何明确的解决方案。我试图把这根绳子当作一根绳子,但没有成功。{"myname","yourname","hisname"}chararray

有没有办法做到这一点?


答案 1

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

喜欢这个:

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.
    }
}

答案 2

是的,有办法。您将从 Java 端将 传递到您的本机方法中,C++ 这将作为 .然后,您将使用 at 获取给定索引,然后使用或获取指向基础字符串数据的 C/C++ 指针。String[]jobjectArrayGetObjectArrayElement()jstringGetStringUTFChars()GetStringChars()

如果您不知道,JNI书是一个有价值的参考。


推荐