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

标签 java pointers java-native-interface

我有一个本地方法 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/

相关文章:

java - Android 与 Blackberry 开发(可重用代码?)

java urlconnection 不抛出 sockettimeoutexception

c++ - 如何在不使用 return 的情况下从函数中获取变量的地址(指针)

c - 如何遍历这个由多个结构体、数组和指针组成的 C 数据结构?

c++ - 如何包装抽象类的指针列表?

java - JNI 中 unsigned char 指针的等价物是什么?

java - NetBeans - 查找我的 Java 应用程序的命令行和参数?

java - 如何在运行时创建对象时动态关闭 JInternal Frame

java - 从 Java 调用 .NET DLL

java - 是否可以停止 JNI 调用