调用一些PyObject函数会导致segfault-Boost python
Calling some PyObject functions causes segfault - Boost python
对于一个项目,我需要用Python接口一些C++模块。为此,我需要一个转换器,它可以将Python元组转换为cv::Size(openCV对象)。这是我的C++函数:
cv::Size tupleToSize(PyObject* obj)
{
// Check if obj is a tuple :
if (!PyTuple_CheckExact(obj))
return cv::Size(-1,-1);
// Element Extraction :
PyObject* x = PyTuple_GetItem(obj,0);
PyObject* y = PyTuple_GetItem(obj,1);
// TODO : extract values from x and y
// Trying to create two variables a et b that contains the values
long a = PyLong_AsLong(x);
long b = PyLong_AsLong(y);
/* The first line causes a SegFault*/
// New cv::Size with extracted values :
cv::Size ret(a,b);
return ret;
}
这里是调用我的函数的主要部分:
int main()
{
// New cv:Size :
Size s(10,20);
// Conversion :
PyObject* ss = SizeToTuple(s); // I have a SizeToTuple function that works fine.
// Reconversion :
Size sss = tupleToSize(ss); /* SEGFAULT */
return 0;
}
所以,我想知道我的PyObject x和y是否不是Long类型,所以我决定检查它们的类型,但当我调用一些函数时:
PyObject_repr(x);
PyObject_str(x);
它们也会导致segfault。
所以,我被卡住了。你有什么建议吗?提前谢谢。
多亏了Tanner Sansbury,我只添加了就解决了这个问题
Py_Initialize();
在我的代码中。
问题解决了!
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- cmake如何在fedora工作站中找到boost静态库包
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- C++中带有List类的迭代器Segfault
- Boost Graph Library,修复节点大小
- 什么是"#include <boost/functional/hash.hpp> "?
- 基于boost的程序的静态链接——zlib问题
- C++:如何在CLion IDE中安装Boost
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 如何在boost beast http请求中设置http头
- 调用一些PyObject函数会导致segfault-Boost python
- 静态初始化期间将 gcc 构建的 Boost 链接到英特尔 C++ 编译程序时出现 Segfault
- C++:所有boost路径操作segfault(Ubuntu/g++)
- 调试Boost序列化segfault问题
- 将字符串变量传递给boost::ASIO读取器/处理程序会导致segfault
- Boost json序列化和message_queue segfault
- Segfault inside boost::asio::deadline_timer::async_wait
- boost::filesystem::在linux上存在segfault