gpt4 book ai didi

c - 如何将 void* 解析为 PyObject

转载 作者:行者123 更新时间:2023-11-30 14:47:13 26 4
gpt4 key购买 nike

我想为我的 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 时,我在返回行中收到 Seg.Fault 错误。

我该如何解决这个问题?

谢谢。

最佳答案

这是 Py_BuildValue 的原型(prototype):

PyObject *Py_BuildValue(char *format, ...);

所以第一个参数应该是“O”而不是“O”。

我也不确定你的第二个参数:你正在使用 my_func() 结果而不是获取指向该函数的指针。

关于c - 如何将 void* 解析为 PyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com