Ich verpacke C-Code aus einem eingebetteten System, um zu experimentieren, SWIG zu verwenden und Python zu targetieren. Es ist einfacher Code, und ich habe die Hardware ausgedrückt und alles ist in Ordnung.Wrapping von C-Code mit SWIG, das statische globale Variablen verwendet
Das Problem, das ich habe, ist, dass die Funktionen, an denen ich interessiert bin, auf einer statischen globalen "Kontext" -Variable arbeiten, die am Anfang der C-Datei definiert ist. Ich kann nicht herausfinden, wie diese Variable vom Modul instanziiert und von den eingepackten Funktionen bearbeitet werden kann.
Ich habe einige einfache Testdateien zum Spielen erstellt, und wenn ich die globale Variable im Modul deklariere, erscheint sie in cvar, aber eine Funktion, die diese Variable in ihrem Körper verändern soll, hat keine Auswirkung auf die cvar-Instanz.
Gibt es eine Möglichkeit, dies zu tun, ohne die C-Quelldateien zu ändern, die ich verpacke?
Wenn Sie es so ändern, funktioniert es für mich. 'somelib.cvar.somevar = 4.0'. –
Entschuldigung, Sie haben Recht. Arbeitet auch nicht für mich. Sie können in Ihrem swig.i-Datei inline Code für die Einstellung der Variablen, aber es ist nicht sehr elegant –