Я работаю над проектом, в котором мне нужно преобразовать введенную пользователем строковую переменную C ++ в исполняемый код Python, я использую Python C API, поэтому мне нужно пройти через процесс преобразования строки C ++ в Cстрока (или массив символов). Попав туда, я не могу получить значение для печати после запуска кода. Я ищу, какая правильная функция в Python C API. Я пробовал PyString_AsString(),
PyBytes_AsString(),
и PyObject_AsUTF8String
до сих пор. Каждая из этих функций вызывала проблемы с памятью, когда я пытаюсь запустить ее с кодом ниже. Мне пришлось жестко перезагрузить мою систему с этими тремя.
Py_Initialize();
//the expected output, the player's output, and the compare functions
//PyObject* expectAnswer; //the expected answer for the level
PyObject* main = PyImport_AddModule("_main_");
PyObject* globalDictionary = PyModule_GetDict(main);
PyObject* localDictionary = PyDict_New();
PyObject* result = PyRun_String(cPlayerString, Py_file_input, globalDictionary, localDictionary);
Py_Finalize();
Мне интересно, просто я не использую правильный вызов. const char* PyUnicode_AsData()
выглядит многообещающе, но я до сих пор не представляю, нужно ли мне сначала конвертировать то, что у меня есть, в Unicode.
Спасибо за помощь!