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

时间:2011-02-08 20:36:07

标签: java c java-native-interface

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

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

2 个答案:

答案 0 :(得分:3)

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

protected long ptrToX;

接下来,设置它:

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

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

永远记住要包含一个终结器,它将在对象被垃圾收集时解除指针的释放。或者,如果您不希望因使用终结器而导致性能损失,只需提供一个取消分配指针的terminate()方法。

答案 1 :(得分:1)

最好切换到JNA,这是从C编程到JAVA的便捷方式。