2013-02-06 29 views
0

我在java中有一个2d矩阵说在方法java_method()中的MyClass.java文件中,并且我声明了一个本地方法说c_method()。该矩阵是浮动类型,如:通过jni传递一个2d矩阵从java到C++文件

float[][] pos_matrix; 

大小3by4和我已经初始化java中的矩阵。现在我想将这个矩阵传递给jni中的cpp文件。怎么做?

回答

0

两个选项:

  1. 编码长度为12的一维数组的矩阵,通过浮法[]。结果在本机端jfloatArray。不能直接使用,请阅读Get/ReleaseFloatArrayElements
  2. 通过传递实例(在本机端产生jobject)将Java矩阵包装到外观类中,方法为float GetValueAt(int,int)(或类似方法),然后在本机端访问,然后调用该方法(GetMethodID/CallFloatMethod)

选项1更简单(少编码),选项2在“OO方式”中更清晰 - 关注点分离。使用选项1时,您可以在JVM不查找时切实修改阵列。

相关问题