メソッドjava_method()のファイルMyClass.javaにJavaの2次元マトリックスがあり、ネイティブメソッドc_method()を宣言しました。行列は次のような float 型です。
float[][] pos_matrix;
サイズは 3by4 で、行列を Java で初期化しました。ここで、このマトリックスを jni の cpp ファイルに渡したいと思います。どうやってするか?
メソッドjava_method()のファイルMyClass.javaにJavaの2次元マトリックスがあり、ネイティブメソッドc_method()を宣言しました。行列は次のような float 型です。
float[][] pos_matrix;
サイズは 3by4 で、行列を Java で初期化しました。ここで、このマトリックスを jni の cpp ファイルに渡したいと思います。どうやってするか?
2 つのオプション:
jfloatArray
ネイティブ側になります。直接使用することはできません。Get/ReleaseFloatArrayElements
float GetValueAt(int,int)
、インスタンスを渡してネイティブ側にアクセスし (ネイティブ側で結果が返されるjobject
)、そのメソッド (GetMethodID/CallFloatMethod) を呼び出します。オプション 1 はよりシンプル (コーディングが少ない) で、オプション 2 は「オブジェクト指向の方法」でクリーンです - 関心の分離。オプション 1 を使用すると、JVM が見ていないときに配列を実質的に変更できます。