【发布时间】:2013-04-28 09:51:13
【问题描述】:
在用 C 语言编写 Python 扩展 时,我只是想测试一些东西,但意识到我无法从 C int 构建 PyObject*s。这里有一个演示问题的可编译代码 sn-p(如果不是在 Mac 上,您可能需要#include <Python.h>),
#include <Python/Python.h>
int main(){
PyObject* obj = Py_BuildValue("i", 42);
return 0;
}
但这会导致Segmentation fault: 11。根据 Xcode 的 LLDB,调用 PyInt_FromLong 时似乎有问题?
如果我尝试做同样的事情但使用double,
PyObject* obj = Py_BuildValue("d", 42.0);
它工作得很好......我在网上找不到任何东西并且没有想法 - 感谢任何帮助。
【问题讨论】:
-
我看不出代码有什么问题。您能否提出一个演示问题的最小完整示例并发布?
-
@NPE 代码只是设置 main 但我还是会发布它
-
您是否正在尝试将 Python 嵌入到另一个应用程序中?为 Python 写一个扩展模块?仅使用
mainsn-p,您就错过了整个 Python 运行时。
标签: python c extend python-c-api