返回 JNI 中的多维数组
Return multidimensional array in JNI
我想返回一个已经存在的多维数组,从C++到Java代码。我的代码如下:
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;
}
但显然它不起作用。正确的方法是什么?
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传递数据数组的最快方法是什么
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 如何将字符串数组返回到 java JNI
- 如何在本机 c++ jni 中实现 java 类型数组
- JNI 如何将 Java 对象数组传递给相同对象类型的 C++ 数组
- 在 JNI 中附加字节数组
- 无法从JNI设置Java Int数组字段
- 如何将字符串数组从C++返回到Java(JNI)
- 我正在尝试修改一个字节数组并通过 JNI 将其从 c++ 发送到 java
- 如何修复将传输到 java 的 2d 数组代码使用 JNI
- JNI:将整数数组从Java传递到C
- 返回 JNI 中的多维数组
- JNI将字符串从Java传递到C ,然后将C 字符串传递给字符串数组
- 如何在Android中将数组从JNI返回到Java
- 如何使用JNI返回C char 2D数组
- 使用 JNI 从 Java 访问 C++ 对象数组
- 适当的JNI转换将数组项目从jobjectarray到分开const char
- 返回数组点列表的 JNI 方法中的错误
- JNI 缓存 Java 数组
- 通过 JNI 从 c++ 获取 java 数组