如何在JNI中将指针从java传递给C?

joh*_*hna 3 java java-native-interface pointers

我有一个本机方法.int sum(int *,int *)如何从java端传递此方法的参数.

编辑:我成功运行的示例方法是double gsl_stats_mean(doubleArray,int,int); 这个方法在GSL中可用,因为我创建了共享对象,并且从java方面我已经发送了所需的参数,并且我得到了double作为返回值.

Mal*_*olm 6

如果方法不更改引用的值,那么您只需将参数作为值传递,并在本机代码中获取它们的地址:

JNIEXPORT jint JNICALL Java_com_example_Summator_sum(JNIEnv *env, jobject thisObj,
        jint firstAddend, jint secondAddend) {
     return (jint) sum(&firstAddend, &secondAddend);
}
Run Code Online (Sandbox Code Playgroud)

Java中的方法是:

native int sum(int firstAdded, int secondAddend);
Run Code Online (Sandbox Code Playgroud)

显然除了sum函数之外你不需要任何指针,因此没有理由在Java中使用它们.