java - 在 JNI 中获取一个 int 数组

标签 java c arrays java-native-interface

我看到一些关于如何使用 JNI 将 C 数组正确传递到 Java 的问题,但我遇到了相反的问题: 如何使用 JNI 在 C 中正确调用 int 数组 getter 方法。具体来说,我想将 BufferedImage 实例传递到 C 中,并在此 BufferedImage 实例上调用“public int[] getRGB()”方法。

我的理解是所有数组都是 Java 中的对象,所以我认为我应该调用: (*env)->调用对象方法() 为了得到这个数组,但是当我尝试这个时,我的 JVM 崩溃了。有什么建议吗?

最佳答案

如果您从 C++ 内部调用,则 env 指针可能无效。您必须手动绑定(bind) JVM 实例。在 C 中类似于以下内容:

JNIEnv *env;
(*g_vm)->AttachCurrentThread (g_vm, (void **) &env, NULL);

您的 g_vm 指针应该来自 DLL 中的 JNI 设置函数调用,您需要将其存储以备后用。

关于java - 在 JNI 中获取一个 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144216/

相关文章:

javax.el.PropertyNotFoundException : Property 'AuthFirstName' not found on type entity.

c - 虚拟地址到物理地址的段错误

c - 为什么直接比较字符串失败,但是使用 char* 成功

arrays - 如何使用 JSON 路径从 JSON 数组中将不存在的 props 提取为 null 或空字符串

Java编码风格,局部变量与重复方法调用

java - 从 ByteBuffer 创建 DataBufferUShort

将 C 数组和指针代码转换为 Go

c - 输入写入 C 中数组的错误位置

Java - 更适合我的控制流的习惯用法

比较结构体中字符串的第一个字母