6
我需要传递一个CFuncType(ctypes.CFUNCTYPE或ctypes.PYFUNCTYPE ...)的回调函数。如何在Python中创建一个CFuncType
如何将python函数转换为CFuncType或如何在python中创建CFuncType函数。
我需要传递一个CFuncType(ctypes.CFUNCTYPE或ctypes.PYFUNCTYPE ...)的回调函数。如何在Python中创建一个CFuncType
如何将python函数转换为CFuncType或如何在python中创建CFuncType函数。
我忘了ctypes的如何真棒是:
下面是http://docs.python.org/library/ctypes.html
所以我们的回调函数接收指向整数复制,并且必须返回一个整数。首先,我们创建了回调函数类型:
CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
对于第一个实施的回调函数,我们简单的打印我们获得的参数,并返回0(增量开发;-):
def py_cmp_func(a, b):
print "py_cmp_func", a, b
return 0
创建C可回叫回调:
cmp_func = CMPFUNC(py_cmp_func)
哦,是啊!这只是做了伎俩。谢谢。 我将该cpm_func传递给一个ctypes.Structure,它有一个字段 'callback',ctypes.CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int)) – manson54 2010-04-28 13:25:59
如果回调的返回类型是' void'?没有'c_void'来指定'CFUNCTYPE'的第一个参数。 – Shahbaz 2015-03-24 10:36:07
从[this](https://gitorious.org/telldus/telldus/commit/1108f3fad26f744c2418d22a547a17669522ce2e)看起来应该使用'None'。 – Shahbaz 2015-03-24 10:38:31