2011-02-08 110 views
2

是否有可能通過JNI將大型結構從C傳遞到Java?如何通過JNI將大型結構從C傳遞到JAVA

有人請給我可能的解決方案嗎?

+2

通常情況下,您需要創建一個Java結構,它是C結構的副本並將其返回。你不能在Java中使用C數據類型(或直接反之亦然) – 2011-02-08 20:45:23

回答

3

聲明指針的struct在你的java類,像這樣:

protected long ptrToX;

接下來,將其設置:

  • 獲取使用(*env)->GetFieldID(...)
  • 獲取指針ID字段使用(*env)->GetLongField(...)
  • 使用(*env)->SetLongField(...)設置指針

要得到它,只需按照上面提到的前兩步。

一定要記住包含一個終結器,當對象被垃圾收集時,它將負責釋放指針。或者,如果您不希望產生使用終結器所帶來的性能問題,只需提供一個terminate()方法來釋放指針。

1

更好的切換到JNA,這是從C編程到JAVA的非常方便的方式。