您的回调类型签名错误;您忘记了结果类型。当函数退出时,它也会收集垃圾。您需要使其全球化。
您的
GetStatus电话缺少论据
pArg。另外,在使用指针时,您需要定义
argtypes,否则在64位平台上会遇到问题。ctypes的默认参数类型为C
int。
from ctypes import *api = CDLL('API.dll')StatusCB = WINFUNCTYPE(None, c_int, c_int, c_void_p)GetStatus = api.GetStatusGetStatus.argtypes = [StatusCB, c_void_p]GetStatus.restype = Nonedef status_fn(nErrorCode, nSID, pArg): print 'Hello world' print pArg[0] # 42?# reference the callback to keep it alive_status_fn = StatusCB(status_fn)arg = c_int(42) # passed to callback?def start(): GetStatus(_status_fn, byref(arg))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)