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

我有一个本地方法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可能是更好的选择。 我发现它更容易使用。