構造体は、元の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アクセッサコードを生成したい場合、これは考慮すべきツールの1つです。https://github.com/marc-christian-schulze/structs4java –