如何使用JNI将c ++ char 2d数组返回到JAVA [英] how to return c++ char 2d array using JNI to JAVA

查看:82
本文介绍了如何使用JNI将c ++ char 2d数组返回到JAVA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用JNI ObjectArray将2D c ++数组返回到JAVA?请任何人参考此代码,并建议我将为该问题做些什么。在此代码中,我想返回char ** array。

How I can return 2D c++ array into JAVA using JNI ObjectArray? Please anybody refer this code and suggest me what kind of stuff I will do for this problem. Here In this code I want to return char **array.

JNIEXPORT void JNICALL
Java_com_android_example_NativeMethod_printThe2DBoard(JNIEnv *env, jobject instance) {

    char **array = create2dArray();
}

char **create2dArray() {
    char **b = new char*[16];
    for (int i = 0; i < 16; i++) {
        b[i] = new char[10];
        for (int j = 0; j < 10; j++)
            b[i][j] = (char) 65;
    }

    return b;
}


推荐答案

您可以返回 2D 3D 数组,如下面的代码:

You can return 2D or 3D array like below code :

JNIEXPORT jobjectArray JNICALL Java_TestNativeArray3D_genTerrain
    (JNIEnv *env, jclass cls, jint seed, jint xCoord, jint yCoord)
{
    jclass intArray1DClass = env->FindClass("[I");
    jclass intArray2DClass = env->FindClass("[[I");

    jint sizeX = 4;
    jint sizeY = 5;
    jint sizeZ = 6;

    jobjectArray array3D = env->NewObjectArray(
        sizeX, intArray2DClass, NULL);
    for (jint x = 0; x < sizeX; x++)
    {
        jobjectArray array2D = env->NewObjectArray(
            sizeY, intArray1DClass, NULL);
        for (jint y = 0; y < sizeY; y++)
        {
            jintArray array1D = env->NewIntArray(sizeZ);
            env->SetObjectArrayElement(array2D, y, array1D);
        }
        env->SetObjectArrayElement(array3D, x, array2D);
    }
    return array3D;
}

请在下面的链接中找到完整的详细信息:

please find complete details in below link :

JNI多维数组作为返回值

jobjectArray 保留您的 2D 字符数组。

这篇关于如何使用JNI将c ++ char 2d数组返回到JAVA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆