Ich versuche, etwas Python ctypes
code von einem Windows-spezifischen Programm zu portieren, um es mit einem Linux-Port meiner Bibliothek zu verbinden. Das kürzeste Python-Codebeispiel, das mein Problem beschreibt, ist unten dargestellt. Wenn ich versuche, es auszuführen, erhalte ich einen Segmentierungsfehler in examine_arguments()
in Python. Ich habe eine printf
-Anweisung in meiner Bibliothek beim Absturzfunktionsaufruf platziert, aber sie wird nie ausgeführt, was mich zu der Annahme verleitet, dass das Problem im Ctypes-Code liegt.
Meine Bibliothek hat die folgenden Header und ein normales C-Programm, das das oben beschriebene tut (Aufruf von create_script_environment
gefolgt von set_var
) läuft gut. Wenn ich die Logging-Informationen anschaue, die meine Bibliothek auf die Konsole legt, passiert der Absturz, wenn ich versuche, avs_set_var
einzugeben.
Ich habe versucht, den Aufruf von GDB zurückzuverfolgen, aber ich verstehe nicht, wie man die Ergebnisse interpretiert, und auch nicht wirklich viel über die Verwendung von GDB.
%Vor%Ich weiß nicht, wie ich dieses Problem angehen soll. Ich habe mir die Details der rufenden Typen angeschaut, aber ich sehe da offensichtlich nichts falsches. Fällt ich in irgendwelche Plattform-spezifischen Artenverwendungen?
Bearbeiten Es scheint ein Problem mit 32-Bit- gegenüber 64-Bit-Architekturen im Ctypes-Modul zu bestehen. Als ich dies erneut mit einem 32-Bit-Build meiner Bibliothek und 32-Bit-Python getestet habe, lief es erfolgreich. Bei 64-Bit segmentiert es an der gleichen Stelle.
Versuchen Sie, c_void_p
für den undurchsichtigen AVS_ScriptEnvironment*
:
und:
%Vor%