Итак, у меня есть C код:PyObject_Str на ctypes выдаёт ошибку сегментации прошел словарь
#include "Python.h"
void check(PyObject* pdict)
{
printf("About to instantiate PyString!\n");
PyObject* mdstr = PyObject_Str(pdict);
printf("Python dict: %s\n", PyString_AsString(mdstr));
}
Что я могу собрать и ссылку в разделяемую библиотеку с именем «libTmp.so»
Затем я использую это фрагмент кода ctypes для вызова функции «проверить»:
from ctypes import cdll, py_object, CFUNCTYPE, POINTER
SO = cdll.LoadLibrary("libTmp.so")
prototype = CFUNCTYPE(py_object, py_object)
check = prototype(('check',SO))
Но когда я пытаюсь вызвать функцию «проверить» я получаю Segfault от линии:
PyObject* mdstr = PyObject_Str(pdict);
чек ({ «один»: 1}), например, будет ... сегментации
Я подозреваю, что это либо недоразумение надлежащего случая использования с моей стороны или, возможно, вопрос юникода?
Любые идеи будут оценены.
Благодаря