Reputation: 3203
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;
}
Upvotes: 1
Views: 429
Reputation: 5711
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 multidimensional array as return value
jobjectArray
hold your 2D
char array.
Upvotes: 2