3

ネイティブ メソッドint sum(int *,int *)があります。このメソッドのパラメータを Java 側から渡すにはどうすればよいですか。

編集:私が正常に実行したメソッドの例は double gsl_stats_mean(doubleArray,int,int); です。このメソッドは GSL で使用できます。そのため、共有オブジェクトを作成し、Java 側から必要なパラメーターを送信し、戻り値として double を取得しました。

4

3 に答える 3

6

メソッドが参照される値を変更しない場合は、パラメーターを値として渡し、ネイティブコードでそれらのアドレスを取得します。

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でポインタを操作する理由はありません。

于 2012-04-30T15:10:23.173 に答える
2

JNIを介してCとJavaの間でポインターを渡すことについてのこの議論を見てください

于 2012-04-30T10:12:55.240 に答える
0

JNI を使用する必要がない限り、おそらくJNAの方が適しています。はるかに使いやすいことがわかりました。

于 2012-04-30T11:23:24.193 に答える