通过jni将java中的2d矩阵传递给C ++文件

时间:2013-02-06 09:39:31

标签: java-native-interface

我在Java中有一个2d矩阵,在方法java_method()中的MyClass.java文件中,我已经声明了一个本地方法,例如c_method()。矩阵是浮点型,如:

    float[][] pos_matrix;

大小为3by4,我在java中初始化了矩阵。现在我想将此矩阵传递给jni中的cpp文件。怎么做?

1 个答案:

答案 0 :(得分:0)

两个选项:

  1. 以长度为12的1D数组编码矩阵,传递为float []。本地jfloatArray的结果。不能直接使用,请阅读Get/ReleaseFloatArrayElements
  2. 使用方法float GetValueAt(int,int)(或类似)将Java矩阵包装在facade类中,并通过传递实例(在本机端生成jobject)然后调用该方法(GetMethodID)在本机端访问/ CallFloatMethod)
  3. 选项1更简单(编码更少),选项2在“OO方式”更清晰 - 关注点分离。使用选项1,您可以在JVM未查看时实际修改数组。