我看到一些关于如何使用 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/