java - 如何通过JNI将大型结构从C传递到JAVA

标签 java c java-native-interface

是否可以通过 JNI 将大型结构从 C 传递到 Java?

有人可以给我可能的解决方案吗?

最佳答案

在 java 类中声明一个指向该结构的指针,如下所示:

protected 长ptrToX;

下一步,设置它:

  • 使用 (*env)->GetFieldID(...) 获取字段 ID
  • 使用 (*env)->GetLongField(...) 获取指针
  • 使用 (*env)->SetLongField(...) 设置指针

要获取它,只需按照上面提到的前两个步骤操作即可。

始终记住包含一个终结器,该终结器将在对象被垃圾收集时负责释放指针。或者,如果您不想因使用终结器而导致性能下降,只需提供一个终止分配指针的 Terminate() 方法即可。

关于java - 如何通过JNI将大型结构从C传递到JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938106/

相关文章:

java - 无法为类 'org.drools.builder.KnowledgeBuilderFactoryService' 实例化服务

java - 覆盖 web.xml 中 URL 模式 "default servlet"的 "/"行为

c - valgrind 重新分配错误 : Conditional jump or move depends on uninitialised value(s)

c++ - 启用视觉样式的日期和时间选择器 -> 更改标题的背景颜色

c - C代码的不合逻辑输出

java - 在 Linux 上的 FPC/Lazarus 中使用 JNI

java - 为 JComboBox 显示一个不可选择的默认值

java - 加载正确的 AWS 凭证时,您提供的 AWS 访问 key ID 不存在于我们的记录中

java - 出现 fatal error : jni. h : No such file or directory #include <jni. h>

java-native-interface - 使用 NewDirectByteBufer() 创建的 ByteBuffer 中没有数组