我正在尝试将结构传递给DLL函数,但是用于构建DLL的环境使用Big Endian格式,并且不包括结构填充。
我可以通过手动打包以下结构来使其工作:
from ctypes import *
import struct
myDll = cdll.LoadLibrary("Libraries\\Test Functions.dll")
sbytes = struct.pack('<i?hd', 5, True, 32767, 0.62)
myDll.MyFunction(sbytes)
但是,这有点低级,如果使用较大的结构,可能会变得非常复杂,所以希望我可以这样做:
class myStruct(BigEndianStructure):
_fields_ = [("Int1", c_int), ("Bool1", c_byte), ("Int2", c_short), ("Double1", c_double)]
simple = myStruct(5, 1, 32767, 0.62)
myDll.MyFunction(byref(simple))
仅此方法无效,因为Python添加了结构填充。 在后面的示例中是否可以删除结构填充?