【问题标题】:Pass numpy array to C++ using Boost.Python使用 Boost.Python 将 numpy 数组传递给 C++
【发布时间】:2019-08-14 12:32:10
【问题描述】:

我正在尝试使用 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 数组的引用?

谢谢!

【问题讨论】:

    标签: python c++ numpy boost


    【解决方案1】:

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

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

    在我的 BOOST_PYHON_MODULE 定义的顶部。

    【讨论】:

    • 我在使用 Boost 1.77.0python 2.7 时也是如此
    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多