我有一个本地方法 int sum(int *,int *)
。我如何从 java 端为这个方法传递参数。
编辑:我成功运行的示例方法是 双 gsl_stats_mean(doubleArray,int,int); 此方法在 GSL 中可用,为此我创建了共享对象,并从 Java 端发送了所需的参数,并获得了 double 值作为返回值。
最佳答案
如果该方法不更改引用值,那么您只需将参数作为值传递,并在 native 代码中获取它们的地址:
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 中使用它们。
关于java - 如何在 JNI 中将指针从 java 传递到 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10381773/