我是Java编程的新手并且有一个基本问题。我想将一个字符串数组传递给JNI层。在JNI函数内部可以用字符串填充数组吗?所有帖子都讨论了如何从JNI层返回字符串数组或如何解析JNI层中的字符串数组。有可能吗?
由于
答案 0 :(得分:2)
是的,有可能。有example here可以完全满足您的需求。您需要在java中创建JNI端的数组和字符串(类似于调用new String(char[])
)。支持Unicode和UTF-8(每个都设置了一个JNI函数)。
#include <jni.h>
#include "ArrayHandler.h"
JNIEXPORT jobjectArray JNICALL Java_ArrayHandler_returnArray
(JNIEnv *env, jobject jobj)
{
jobjectArray ret;
int i;
char *message[5]= {"first",
"second",
"third",
"fourth",
"fifth"};
ret= (jobjectArray)env->NewObjectArray(5,
env->FindClass("java/lang/String"),
env->NewStringUTF(""));
for(i=0;i<5;i++) {
env->SetObjectArrayElement(
ret,i,env->NewStringUTF(message[i]));
}
return(ret);
}