我有一個結構體,它不像原始的C一樣被完全描述。JNA來自指針的Java結構體
public class DISPLAY_DEVICE extends Structure {
public char DeviceName[] = new char[32];
public int StateFlags;
}
鑑於它實際上需要,方式,更多的變量。但是,將它們全部移植需要很長時間。 現在我創建結構並將指針傳遞給一個dll函數,並嘗試使用device.read();重新獲得變數。但是,變量返回空。所以我的問題是,我是否需要填寫整個結構?或者還有其他問題嗎?
DISPLAY_DEVICE displayDevice = new DISPLAY_DEVICE();
int i = 0;
while((CLibrary.INSTANCE.EnumDisplayDevicesA(Pointer.NULL, i, displayDevice.getPointer(), 0))) {
System.out.println("screen" + i);
displayDevice.read();
System.out.println(displayDevice.StateFlags);
System.out.println(displayDevice.DeviceName);
如果你想從你的C/C++定義中生成Java訪問器代碼,這可能是一個需要考慮的工具:https://github.com/marc-christian-schulze/structs4java – 2016-09-10 10:22:24