我想知道是否可以使用 ctypes 处理 Delphi Packed 记录。我有一个用 Delphi 编写的 dll,它公开了一些带有 stdcall 约定的方法。
方法之一是返回一个像这样打包的自定义记录:
TMapCell = packed record
Tile : Word;
Z : Shortint;
end;
当记录没有打包时,我可以这样处理它们:
class TMapCell(Structure):
_fields_ = [
('Tile', c_ushort),
('Z', c_byte),
]
但是当我尝试使用它时,我遇到了访问冲突错误
WindowsError: exception: access violation writing 0x0000112D