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/

相关文章:

javascript - react 形式 : How to make input data as list objects with same input name?

java - Spring AWS S3 : How to upload an image and get a URL which shows it rather than downloads it?

java - 从 Ldap 数据库(ApacheDs)获取 SHA 密码值

c - 在Linux中使用fallocate()快速预分配大文件

c - 你如何阅读 C 声明?

javascript - 在给定的数组中,我试图获取出现偶数次的值,

python - 如何使用 matplotlib 从 numpy 列表中绘制多个数据集

java - 从 java 应用程序到 ffmpeg 子进程的管道系列图像

java - 使用 java config 配置的自定义 spring 数据 (mongo) 存储库的 Autowiring 如何工作?

连接 2 个字符串并返回一个新指针