我想为我的C函数编写一个包装器,因为我想从python代码中调用它。所以我的包装器函数是
static PyObject* my_func_wrapper(PyObject *self, PyObject *args)
{
PyObject* obj_Ptr = my_func();
return Py_BuildValue('O', obj_Ptr);
}
我的C my_func()没有参数,并且将MyClass指针转换为(void *)。
当我运行setup.py脚本时,我会得到
warning: passing argument 1 of ‘Py_BuildValue’ makes pointer from integer without a cast [-Wint-conversion]
Py_BuildValue('O', obj_Ptr);
当我从python调用my_func_wrapper时,在返回行中出现段错误错误。
我该如何解决?
谢谢。
答案 0 :(得分:1)
这是Py_BuildValue的原型:
PyObject *Py_BuildValue(char *format, ...);
因此,第一个参数应为“ O”而不是“ O”。
我也不确定第二个参数:您正在使用my_func()结果而不是获得指向此函数的指针。