使用Boost.Python将NumPy数组传递给C++

6

我正在尝试使用Boost.Python将numpy数组传递到C++。

C++代码如下:

#include <boost/python.hpp>
#include <boost/python/numpy.hpp>

void f(boost::python::numpy::ndarray& x){}

BOOST_PYTHON_MODULE(libtest)
{
  boost::python::def("f", f);
}

以下是 Python 代码:

import libtest
import numpy
x=numpy.array(range(3))
libtest.f(x)

这会导致分段错误。在按值传递和按引用传递变量时会发生这种情况。

我已经找到了实现我所需的内容的方法。然而,使用Boost.Python的目的是为了能够从模块中简单地调用函数,而无需像ctypes一样在Python侧编写包装器来处理某些类型或返回值。

是否可以直接传递一个numpy数组的引用?

谢谢!

1个回答

4
我遇到了同样的问题,显然通过在BOOST_PYTHON_MODULE定义顶部添加boost::python::numpy::initialize();解决了它。

我在使用Boost 1.77.0和Python 2.7时也遇到了同样的问题。 - dc_Bita98

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接