我有一个Delhi DLL,其中暴露了一个具有以下签名的函数:
Function MyFunc(ObjID : Cardinal) : TMyRec; stdcall;
记录的定义如下:
type TMyRec = record
Count : Cardinal;
Items : array of TMyItemRec;
end;
type TMyItemRec = record
ID : Cardinal;
Params : array of String;
end;
现在我的问题是:我如何使用Python ctypes访问调用dll的MyFunc结果?我编写了两个类来模拟类型。
from ctypes import *
class TMyItemRec(Structure):
_fields_ = [("ID", c_int), ("Params", POINTER(c_wchar_p))]
class TMyRec(Structure):
_fields_ = [("Count", c_int), ("Params", POINTER(TMyItemRec))]
但是当我尝试像这样读取数据时:
my_dll = windll.Script
def GetMyRec(ID):
my_dll.MyFunc.argtypes = [c_uint]
my_dll.MyFunc.restype = TClilocRec
return my_dll.Script_GetClilocRec(ID)
我遇到了访问冲突错误。