J'ai oublié comment impressionnant ctypes est:
Ci-dessous est Copié à partir http://docs.python.org/library/ctypes.html
donc notre fonction de rappel reçoit des pointeurs vers des entiers, et doit retourner un entier. Tout d'abord, nous créons le type de la fonction de rappel:
CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
Pour la première implémentation de la fonction de rappel, nous imprimons simplement les arguments que nous obtenons, et retour 0 (développement progressif ;-):
def py_cmp_func(a, b):
print "py_cmp_func", a, b
return 0
Créez le rappel Callable C:
cmp_func = CMPFUNC(py_cmp_func)
Oh, ouais! Cela a juste fait l'affaire. Merci. Je passe ce cpm_func à un ctypes.Structure qui a un champ 'callback', ctypes.CFUNCTYPE (c_int, POINTER (c_int), POINTER (c_int)) – manson54
Que feriez-vous si le type de retour du rappel est ' vide? Il n'y a pas de 'c_void' à spécifier en tant que premier argument de' CFUNCTYPE'. – Shahbaz
De [this] (https://gitorious.org/telldus/telldus/commit/1108f3fad26f744c2418d22a547a17669522ce2e) il semble que 'None' devrait être utilisé. – Shahbaz