Как вернуть массив строк в Java JNI - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу вернуть массив 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]);
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете сделать это:

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