1

メソッドjava_method()のファイルMyClass.javaにJavaの2次元マトリックスがあり、ネイティブメソッドc_method()を宣言しました。行列は次のような float 型です。

    float[][] pos_matrix;

サイズは 3by4 で、行列を Java で初期化しました。ここで、このマトリックスを jni の cpp ファイルに渡したいと思います。どうやってするか?

4

1 に答える 1

1

2 つのオプション:

  1. 行列を長さ 12 の 1D 配列にエンコードし、float[] として渡します。結果はjfloatArrayネイティブ側になります。直接使用することはできません。Get/ReleaseFloatArrayElements
  2. メソッド (または同様のもの) を使用して Java マトリックスをファサード クラスにラップしfloat GetValueAt(int,int)、インスタンスを渡してネイティブ側にアクセスし (ネイティブ側で結果が返されるjobject)、そのメソッド (GetMethodID/CallFloatMethod) を呼び出します。

オプション 1 はよりシンプル (コーディングが少ない) で、オプション 2 は「オブジェクト指向の方法」でクリーンです - 関心の分離。オプション 1 を使用すると、JVM が見ていないときに配列を実質的に変更できます。

于 2013-02-11T15:30:05.290 に答える