ネイティブ メソッドint sum(int *,int *)
があります。このメソッドのパラメータを Java 側から渡すにはどうすればよいですか。
編集:私が正常に実行したメソッドの例は double gsl_stats_mean(doubleArray,int,int); です。このメソッドは GSL で使用できます。そのため、共有オブジェクトを作成し、Java 側から必要なパラメーターを送信し、戻り値として double を取得しました。
ネイティブ メソッドint sum(int *,int *)
があります。このメソッドのパラメータを Java 側から渡すにはどうすればよいですか。
編集:私が正常に実行したメソッドの例は double gsl_stats_mean(doubleArray,int,int); です。このメソッドは GSL で使用できます。そのため、共有オブジェクトを作成し、Java 側から必要なパラメーターを送信し、戻り値として double を取得しました。
メソッドが参照される値を変更しない場合は、パラメーターを値として渡し、ネイティブコードでそれらのアドレスを取得します。
JNIEXPORT jint JNICALL Java_com_example_Summator_sum(JNIEnv *env, jobject thisObj,
jint firstAddend, jint secondAddend) {
return (jint) sum(&firstAddend, &secondAddend);
}
そして、Javaのメソッドは次のとおりです。
native int sum(int firstAdded, int secondAddend);
どうやら、関数以外の場所にはポインタは必要ないのでsum
、Javaでポインタを操作する理由はありません。
JNIを介してCとJavaの間でポインターを渡すことについてのこの議論を見てください
JNI を使用する必要がない限り、おそらくJNAの方が適しています。はるかに使いやすいことがわかりました。