如何在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可能是更好的选择。 我发现它更容易使用。