您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在C中为函数指针回调函数编写Python ctypes

在C中为函数指针回调函数编写Python ctypes

您的回调类型签名错误;您忘记了结果类型。当函数退出时,它也会收集垃圾。您需要使其全球化。

您的GetStatus电话缺少论据pArg。另外,在使用指针时,您需要定义argtypes,否则在64位平台上会遇到问题。ctypes的认参数类型为Cint

from ctypes import *

api = CDLL('API.dll')
StatusCB = WINFUNCTYPE(None, c_int, c_int, c_void_p)

GetStatus = api.GetStatus
GetStatus.argtypes = [StatusCB, c_void_p]
GetStatus.restype = None

def 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))
python 2022/1/1 18:49:39 有367人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶