2010-04-28 41 views

回答

8

我忘了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) 
+0

哦,是啊!这只是做了伎俩。谢谢。 我将该cpm_func传递给一个ctypes.Structure,它有一个字段 'callback',ctypes.CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int)) – manson54 2010-04-28 13:25:59

+0

如果回调的返回类型是' void'?没有'c_void'来指定'CFUNCTYPE'的第一个参数。 – Shahbaz 2015-03-24 10:36:07

+0

从[this](https://gitorious.org/telldus/telldus/commit/1108f3fad26f744c2418d22a547a17669522ce2e)看起来应该使用'None'。 – Shahbaz 2015-03-24 10:38:31