【问题标题】:How to pass a large structure through JNI from C to JAVA如何通过JNI将大型结构从C传递到JAVA
【发布时间】:2011-02-08 20:36:06
【问题描述】:

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

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

【问题讨论】:

标签: java c java-native-interface


【解决方案1】:

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

protected long ptrToX;

接下来,设置它:

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

要获得它,只需按照上面提到的前两个步骤。

永远记得包含一个终结器,它会在对象被垃圾回收时负责释放指针。或者,如果您不想因使用终结器而导致性能下降,只需提供一个终止指针的 terminate() 方法。

【讨论】:

    【解决方案2】:

    最好切换到 JNA,从 C 到 JAVA 编程非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2010-10-26
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多