1
有沒有什麼辦法可以爲JNA庫中的所有數據結構(* .dll Java wrapper)設置全局內存字節對齊方式?如何爲JNA庫中的所有結構設置全局內存字節對齊方式?
有時我必須通過試驗和錯誤在實施過程中確定正確的對齊方式,目前我以非常笨拙的方式進行此操作 - 我在每個結構中設置數據對齊方式(超級(ALIGN_NONE))(很多結構在不同的文件中)。
編輯: 解決我的問題,最好的辦法是擴展結構:
public abstract class StructureAligned extends Structure {
public static final int STRUCTURE_ALIGNMENT = ALIGN_NONE;
protected StructureAligned() {
super(STRUCTURE_ALIGNMENT);
}
protected StructureAligned(Pointer p) {
super(p, STRUCTURE_ALIGNMENT);
}
}
..但是這導致了下一個問題:哪(指針)構造更好,原因如下:
super(p, STRUCTURE_ALIGNMENT);
或
super(STRUCTURE_ALIGNMENT);
read();
或
super(STRUCTURE_ALIGNMENT);
useMemory(p);
read();
?
堆上的所有數據結構都是8字節對齊的。你能舉一個你的意思嗎? –
我的意思是基於com.sun.jna.Structure的結構中字段的n字節對齊。這個問題連接到http://stackoverflow.com/questions/36747228/c-c-struct-to-java-jna-structure-pointer-to-struct – jakson