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
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