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

6 c++ python boost numpy

我正在尝试使用 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);
}
Run Code Online (Sandbox Code Playgroud)

Python代码是:

import libtest
import numpy
x=numpy.array(range(3))
libtest.f(x)
Run Code Online (Sandbox Code Playgroud)

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

我找到了一种方法来完成我需要的事情。然而,使用 Boost.Python 的目的是能够简单地从模块调用函数,而不必像 ctypes 那样在 Python 端编写包装器,其中必须处理某些类型或返回值。

是否可以简单地传递对 numpy 数组的引用?

谢谢!

gst*_*gst 4

我遇到了同样的问题,显然通过放置解决了它

boost::python::numpy::initialize();

在我的 BOOST_PYHON_MODULE 定义的顶部。