Я пытаюсь использовать API Python/C для запуска функции Python, которая возвращает строку. Я хочу сохранить эту возвращенную строку в переменную C++, но я не могу заставить ее работать. Я использую Python 3, и кажется, что метод PyString_FromString()
больше не работает. Вот мой код:Python 3: Проблемы с строкой API Python/C
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
Py_Initialize();
pName = PyUnicode_FromString("ocr");
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, "get_text");
pValue = PyUnicode_FromString("ocr_noise.png");
pValue = PyObject_CallObject(pFunc, pValue);
std::string result = PyUnicode_FromObject(pValue);
Py_DECREF(pModule);
Py_DECREF(pName);
Py_DECREF(pValue);
Py_Finalize();
return 0;
}
Файл питон называется ocr.py
, а функция Я пытаюсь вызвать называется get_text(value)
. Я пытаюсь передать в "ocr_noise.png"
в качестве аргумента. Любые идеи, что я должен делать?
EDIT 2: Мне не нужно использовать std :: string, как в коде. Что еще я могу использовать для хранения строки, возвращаемой функцией?
Что вы имеете в виду «похоже, что метод PyUnicode_FromString() больше не работает»? Вы получаете исключение? Segfault? Что-то другое? –
Я имел в виду PyString_FromString(). Виноват. – MPorto
В Python нет такой вещи, как 'PyString_FromString'. –