如何在Python中创建CFuncType

时间:2010-04-28 12:07:02

标签: python callback ctypes

我需要传递一个CFuncType的回调函数(ctypes.CFUNCTYPE或ctypes.PYFUNCTYPE ......)。

如何将python函数转换为CFuncType,或者如何在python中创建CFuncType函数。

1 个答案:

答案 0 :(得分:9)

我忘记了很棒的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 callable回调:

cmp_func = CMPFUNC(py_cmp_func)