在C中编写Python 扩展时,我只是尝试测试一些事情,但意识到我无法从C {PyObject*
构建int
{1}}。这是一个可编辑的代码段,用于演示此问题(如果不是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);
它运作得很好......我无法在网上找到任何内容,也没有任何想法 - 任何帮助都有所帮助。
答案 0 :(得分:4)
如果您尝试将Python嵌入到C程序中,首先必须使用Py_Initialize()
初始化Python,并在完成后调用Py_Finalize()
。
试试这个......
#include <Python/Python.h>
int main()
{
Py_Initialize();
PyObject* obj = Py_BuildValue("i", 42);
Py_Finalize();
return 0;
}
...并查看embedding docs以获取更多示例。