传递给C DLL函数时如何从Python结构中删除填充

时间:2019-04-07 15:18:39

标签: python ctypes

我正在尝试将结构传递给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添加了结构填充。 在后面的示例中是否可以删除结构填充?

0 个答案:

没有答案