gpt4 book ai didi

python - C&Python混合编程出现 'Segmentation fault'怎么解决?

转载 作者:太空狗 更新时间:2023-10-30 02:13:16 26 4
gpt4 key购买 nike

在我的 Ubuntu 下:

$猫测试.py

#Filename test.py 
def Hello():
print "Hello, world!"

$猫汤姆.cpp

#include <Python.h> 

int main()
{
Py_Initialize();

PyObject * pModule = NULL;
PyObject * pFunc = NULL;

pModule = PyImport_ImportModule("test");
pFunc = PyObject_GetAttrString(pModule, "Hello");
PyEval_CallObject(pFunc, NULL);

Py_Finalize();

return 0;
}

然后编译它:

g++ tom.cpp -I/usr/include/python2.7 -L/usr/lib/python2.7 -lpython2.7

运行:$./a.out

Segmentation fault

为什么?有人能帮忙吗?谢谢!

BR,汤姆

最佳答案

之前的发帖人可能是正确的,所以我的评论更“一般”……但是在 C/C++ 中,在尝试取消引用之前,您永远不应该在未确认它不为 NULL 的情况下接受从函数返回的指针。上面的代码更正确的应该是:

 pModule = PyImport_ImportModule("test");
if (pModule == NULL) {
printf("ERROR importing module");
exit(-1);
}
pFunc = PyObject_GetAttrString(pModule, "Hello");
if (pFunc == NULL) {
printf("ERROR getting Hello attribute");
exit(-1);
}
PyEval_CallObject(pFunc, NULL);

关于python - C&Python混合编程出现 'Segmentation fault'怎么解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824949/

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