所以,我有这个 C 代码:
#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))
但是当我尝试调用“check”函数时,我从以下行得到了一个段错误:
PyObject* mdstr = PyObject_Str(pdict);
check({'one':1}) 例如会出现段错误...
我怀疑这是我对正确用例的误解还是 unicode 问题?
如有任何想法,我们将不胜感激。
谢谢
最佳答案
事实证明,Mr. Mark Tolonen 已经在 StackOverflow 的其他地方询问和回答了这个问题
关于python - ctypes 上的 PyObject_Str 段错误通过了字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29357326/