1 前言
二维数组在JNI中的传值,与一维数组有些微不同。逻辑上,二维数组是一个类似于行列式的数据结构,但其实在内存存储分配上,二维数组和一维数组没有什么不同。因此,二维数组在JNI接口中的传值,比一维数组只多了一些操作,本质上,没有太大差别。
本文总结了二维数组在JNI中传值的一般性方法。包括三个程序:
- Java二维数组传值给C++
- C++代码修改Java类中的二维数组
C++从JNI返回一个二维数组给Java层
开发环境:Java 8
- Visual Studio 2013 Ultimate
2 程序一:Java类中的二维数组成员传值给C++并求和
2.1 代码
- Java代码
public class JNIArray2D{
static {
System.loadLibrary("JNITest");
}
public native void addArray2D(int[][] arr);
int[][] arr2D = new int[10][10];
public static void main(String args[]){
JNIArray2D jni = new JNIArray2D();
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
jni.arr2D[i][j] = i*j;
}
}
System.out.println("call the jni function:");
jni.addArray2D(jni.arr2D);
}
}
- Native代码
JNIEXPORT void JNICALL J