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!