ctypes ungültiger Ergebnistyp für eine Callback-Funktion

8

Ich stehe bei der Implementierung mit ctypes vor einem Problem. Ich habe 2 C-Funktionen:

%Vor%

wo Antichain und Zählfunktion zwei Strukturen sind. Ein Antikettenglied kann wie eine Menge gesehen werden, die Elemente unbekannter Art enthält (in diesem Beispiel, Zählfunktion). Die Funktion "discompose_antitichain" verwendet (unter anderem) als Argument die Funktion, die zum Zerlegen der Elemente verwendet wird, die das Kettenglied enthält (- & gt; eine Funktion, deren Prototyp leer ist ** (*) (void *)).

Jetzt möchte ich decompose_antianthain aus Python verwenden. Ich habe Ctypes verwendet:

%Vor%

Die letzte Zeile erzeugt den Fehler: ungültiger Ergebnistyp für eine Callback-Funktion.

Ich kann nicht sehen, wo das Problem herkommt. Kann mir jemand helfen? Danke

    
Naked 01.06.2011, 11:21
quelle

1 Antwort

1

Sie müssen sicherstellen, dass die Argentypen und Ergebnistypen übereinstimmen. Es sieht so aus, als hätten Sie die Argumenttypen von decompose_antianthain_c getauscht. Sie haben DECOMPOSE_COUNTING_FUNCTION_FUNC, COMPARE_COUNTING_FUNCTIONS_FUNC in den argtypes, die nicht mit der oben angegebenen Deklaration der C-Funktion übereinstimmen. Sie versuchen dann, es mit COMPARE_COUNTING_FUNCTIONS_FUNC zuerst und DECOMPOSE_COUNTING_FUNCTION_FUNC Sekunde aufzurufen.

DECOMPOSE_COUNTING_FUNCTION_FUNC sieht ebenfalls falsch aus. Es sollte wahrscheinlich CFUNCTYPE(POINTER(c_void_p), c_void_p) sein, nur vom Rest des Codes zu raten.

Ich kann eine detailliertere Antwort geben, wenn Sie den Code angeben, der COMPARE_COUNTING_FUNCTIONS_FUNC und CountingFunction

erstellt     
ricochet1k 22.04.2012 02:53
quelle

Tags und Links