habe ich vergessen, wie genial ctypes ist:
Unterhalb von http://docs.python.org/library/ctypes.html
unsere Callback-Funktion Zeiger auf ganze Zahlen kopiert wird, erhält also und muss eine ganze Zahl zurück. Zuerst haben wir den Typ für die Callback-Funktion erstellen:
CMPFUNC = CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int))
Für die erste Implementierung der Callback-Funktion, drucken wir einfach die Argumente, die wir bekommen, und das Rück 0 (inkrementelle Entwicklung ;-):
def py_cmp_func(a, b):
print "py_cmp_func", a, b
return 0
Erstellen Sie den Callback C Call:
cmp_func = CMPFUNC(py_cmp_func)
Oh, ja! Das hat einfach geholfen. Vielen Dank. Ich übergebe diese cpm_func an eine ctypes.Structure, die ein Feld 'Callback' hat, ctypes.CFUNCTYPE (c_int, POINTER (c_int), POINTER (c_int)) – manson54
Was würden Sie tun, wenn der Rückgabetyp des Rückrufs ist ungültig? Es gibt kein 'c_void', das als erstes Argument von' CFUNCTYPE' festgelegt werden kann. – Shahbaz
Von [dies] (https://gitorious.org/telldus/telldus/commit/1108f3fad26f744c2418d22a547a17669522ce2e) sieht es so aus, als würde 'None' verwendet werden. – Shahbaz