gpt4 book ai didi

c++ - 调用一些 PyObject 函数会导致段错误 - Boost python

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:13:49 25 4
gpt4 key购买 nike

对于一个项目,我需要在 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);

它们也会导致段错误。

所以,我很困。你有什么建议吗 ?提前致谢。

最佳答案

感谢 Tanner Sansburry,我通过添加解决了这个问题:

Py_Initialize();

在我的代码中。

问题解决了!

关于c++ - 调用一些 PyObject 函数会导致段错误 - Boost python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649699/

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