【发布时间】:2017-05-09 09:00:18
【问题描述】:
我想将一个已经存在的多维数组从 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;
}
但显然它不起作用。正确的方法是什么?
【问题讨论】:
-
也许检查return 2d primitive array的更一般的问题
-
这个答案令人困惑。我认为它不应该那么复杂和冗长。
-
但是你试过了吗?不管你喜不喜欢,JNI 往往很冗长,而且所有事情都认为代码没有那么大。
-
@Nafis 您必须通过
javah传递您的Java 代码才能获得本机函数原型。获得函数原型后,您就可以按原样使用这些原型来创建调用。本机代码无法返回int[][]- 它将返回jobjectArray。 Java 中的多维数组是数组的数组——Java 中的数组是一个对象。
标签: java android c++ android-studio java-native-interface