在 JNI 中返回多维数组 [英] Return multidimensional array in JNI
本文介绍了在 JNI 中返回多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将一个已经存在的多维数组从 C++ 返回到 Java 代码.我的代码如下:
I want to return an already existing multidimensional array from C++ to Java code. My code is as below:
int cells [3][3] = {{0}};
int[][]
Java_com_packagename_appname_GameView_addNew(
JNIEnv *env,
jobject, int row, int col, int val) {
cells[row][col] = val;
return cells;
}
但显然它不起作用.什么是正确的方法?
But obviously it's not working. What would be the proper way?
推荐答案
int cells [3][3] = {{0}};
jobjectArray
Java_com_packagename_appname_GameView_addNew(
JNIEnv *env,
jobject, int row, int col, int val) {
cells[row][col] = val;
// Get the int array class
jclass cls = env->FindClass("[I");
jintArray iniVal = env->NewIntArray(3);
// Create the returnable jobjectArray with an initial value
jobjectArray outer = env->NewObjectArray(3,cls, iniVal);
for (int i = 0; i < 3; i++)
{
jintArray inner = env->NewIntArray(3);
env->SetIntArrayRegion(inner, 0, 3, cells[i]);
// set inner's values
env->SetObjectArrayElement(outer, i, inner);
env->DeleteLocalRef(inner);
}
return outer;
}
这篇关于在 JNI 中返回多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文