Есть некая программа, которая использует Python через C-API. Подскажите как в ней получить значение строки? Допустим, после выполнения простой строки при помощи PyRun_SimpleString образовалась текстовая переменная test:
Py_Initialize();
PyObject *module = PyImport_AddModule("__main__");
qDebug() << "python=" << PyRun_SimpleString("import math\ntest = 'haha'\nprint('%d -> %s' % (math.sqrt(144), test))\n");
PyObject *_out = PyObject_GetAttrString(module, "test");
char *c_str = PyByteArray_AsString(_out);
QString out = QString(c_str);
qDebug() << "out=" << out;
Py_Finalize();
Вышеприведенный пример не падает, но на выходе пустая строка. Есть еще способ через PyUnicode_FromString но опять же он не работает. Вообще непонятно, может PyObject_GetAttrString это неверный путь? PySys_GetObject тоже не дает результата совместно с PyUnicode_FromString.
Если кто работал с C-API, подскажите пожалуйста, уже второй день гуглю, но ни примеры из инета ни документация не помогает разобраться. Хотя странно, вроде самая простая задача.