1

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

    float[][] pos_matrix;

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

4

1 回答 1

1

两种选择:

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

选项 1 更简单(编码更少),选项 2 在“OO 方式”中更简洁 - 关注点分离。使用选项 1,您实际上可以在 JVM 不查看时修改数组。

于 2013-02-11T15:30:05.290 回答