3 Stimmen

Wie erstellt und weist man eine Python-Variable in C zu?

Ich habe die Python-Umgebung initialisiert durch

Py_Initialize();

Ich habe kein externes Python-Modul in die Umgebung importiert und alles funktioniert gut. Aber wenn ich einen C-String in diese Umgebung übergeben muss, bin ich verloren...

Ich dachte daran, eine Funktion in der Umgebung hinzuzufügen, um die Variable wie der folgende Code zuzuweisen.

char *str;
str="\
def assign_var(str):\
    global string\
    string = str";
PyRun_SimpleString(str);

Rufen Sie dann diese Funktion in C auf und übergeben Sie die konvertierte C-Zeichenkette als Argumente.

Ich glaube nicht, dass alles, was ich oben erwähnt habe, ein guter Weg ist, um das Problem zu lösen...

Wie kann ich das schaffen?

Lösung:

Zum Schluss hier die Lösung mit Peter Mortensen Hilfe. (Danke Peter Mortensen!)

Da die Python-Umgebung, die ich initialisiert habe, eine rein leere Umgebung ist (ohne importierte Module). Ich verwende

py_main = PyImport_AddModule("__main__");

um eine Verbindung zur Hauptumgebung herzustellen. und rufen dann

PyModule_AddStringConstant(py_main, "string_name", str);

um den C-String in die Python-Umgebung zu bringen.

Um zu überprüfen, ob alles richtig gemacht wurde, versuchen Sie es einfach:

PyRun_SimpleString("print dir()");
PyRun_SimpleString("print string_name");

und Sie werden sehen, dass die Zeichenkette "string_name" in der dir()-Liste erscheint und von Python gedruckt wird!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X