У меня ошибка нарушения доступа в коде C, вызывающем Python.
Я пытаюсь вызвать функцию sympy из Python и обработать результат в C.
#include <Python.h>
int main(int argc, char *argv[])
{
PyObject *pmod, *pdict, *pValue;
Py_Initialize();
pmod = PyImport_ImportModule("sympy");
PyErr_Print();
pdict = PyModule_GetDict(pmod);
pValue = PyRun_String("x = symbols('x'); diff(cos(x), x)", Py_single_input, pdict, pdict);
PyErr_Print();
if (pValue != NULL) {
//PyObject* pu = PyUnicode_AsEncodedString(pValue, "utf-8", "~E~");
//printf("Result of call: %s\n", PyBytes_AS_STRING(pu));
//Py_DECREF(pu);
Py_DECREF(pValue);
Py_DECREF(pmod);
Py_DECREF(pdict);
}
else {
PyErr_Print();
return 1;
}
Py_FinalizeEx();
return 0;
}
Я хотел бы знать причину этого нарушения доступа и способы его устранения. Я также хотел бы знать, почему закомментированный printf, показывающий результат, не работает.
Моя строка компиляции:
gcc probe.c `python3-config --cflags` `python3-config --ldflags` -fpic
Моя версия Python - 3.6.7.
Заранее спасибо.