使用JNI将字符串数组从java传递到C
2022-09-01 07:10:02
我有一个字符串数组,我正在尝试使用JNI将此数组发送到C。我找不到任何明确的解决方案。我试图把这根绳子当作一根绳子,但没有成功。{"myname","yourname","hisname"}
chararray
有没有办法做到这一点?
我有一个字符串数组,我正在尝试使用JNI将此数组发送到C。我找不到任何明确的解决方案。我试图把这根绳子当作一根绳子,但没有成功。{"myname","yourname","hisname"}
chararray
有没有办法做到这一点?
你可以编写一个简单的函数来获取一个对象,将每个对象转换为jstring,然后调用它。jobjectArray
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.
}
}
是的,有办法。您将从 Java 端将 传递到您的本机方法中,C++ 这将作为 .然后,您将使用 at 获取给定索引,然后使用或获取指向基础字符串数据的 C/C++ 指针。String[]
jobjectArray
GetObjectArrayElement()
jstring
GetStringUTFChars()
GetStringChars()
如果您不知道,JNI书是一个有价值的参考。