如何将字符串数组返回到 java JNI

How to return string array to java JNI

本文关键字:java JNI 返回 数组 字符串      更新时间:2023-10-16

我想将 finalResult 数组返回给 java。任何帮助 感谢。

extern "C"
JNIEXPORT void JNICALL
Java_com_testjniproject_MainActivity_AnalyseImageDisplay(JNIEnv *env, jobject instance, jlong sourceImageArray)
{
Mat &srcInputImg = *(Mat*)sourceImageArray;
vector<tuple<string, string, int>> result = AnalyseImage(srcInputImg);
enter code here
string finalResult[3];
for (int i=0; i < result.size(); i++)
{
cout << get<0>(result[i]) << " : " << get<1>(result[i]) << " With confidence " << get<2>(result[i]) << "%" << endl;
finalResult[i] = get<1>(result[i]);
}
}

你可以这样做:

extern "C" {
JNIEXPORT jobjectArray JNICALL Java_com_testjniproject_MainActivity_AnalyseImageDisplay(
JNIEnv *env,
jobject instance,
jlong sourceImageArray) {
jobjectArray result;
result = (jobjectArray)env->NewObjectArray(3,env->FindClass("java/lang/String"),env->NewStringUTF(""));
for(int i=0; i<3; i++) {
env->SetObjectArrayElement(result,i,env->NewStringUTF(finalResult[i].c_str()));
}
return result;
}
}