Я инициализировал среду Python
Py_Initialize();
У меня нет внешнего модуля Python, импортированного в среду, и все работает хорошо. Но когда мне нужно передать строку C в эту среду, я теряюсь ...
Я думал добавить в среду функцию для присвоения переменной, как в следующем коде.
char *str;
str="\
def assign_var(str):\
global string\
string = str";
PyRun_SimpleString(str);
А затем вызовите эту функцию в C и передайте преобразованную строку C в качестве аргументов.
Не думаю, что все, что я упомянул выше, является хорошим способом решения проблемы ...
Как я могу сделать эту работу?
Решение:
Наконец, вот решение с помощью Peter Mortensen . (Спасибо, Питер Мортенсен!)
Поскольку среда Python, которую я инициализировал, является чистой пустой средой (без каких-либо импортированных модулей). я использую
py_main = PyImport_AddModule("__main__");
чтобы получить доступ к основному окружению. а затем позвоните
PyModule_AddStringConstant(py_main, "string_name", str);
для переноса строки C в среду Python.
Чтобы убедиться, что все сделано, просто попробуйте:
PyRun_SimpleString("print dir()");
PyRun_SimpleString("print string_name");
и вы увидите, что строка "string_name" появляется в списке dir () и выводит ее на печать с помощью python!