2010-04-28 79 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