我有一个结构体,它不像原始的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