Ошибка сегментации при использовании boost :: numpy :: ndarray
Я получаю то, что я считаю странной ошибкой сегмента, когда пытаюсь пройтиboost::numpy::ndarray
в качестве аргумента:
#include <iostream>
#include <boost/python.hpp>
#include <boost/numpy.hpp>
void say_hello(boost::numpy::ndarray& my_array)
//void say_hello(int x) This works fine
{
std::cout<<"Hello"<<std::endl;
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("say_hello", say_hello);
}
Я знаю, что это глупый пример, но я не должен получать ошибку сегмента, и это самый маленький пример, до которого я смог свести проблему. Может быть, мне нужно указатьndarray
тип или количество измерений, но я не мог найти документацию по нему. Я смотрел наэтот, но это не казалось очень полезным. У меня ощущение, что я скучаю по чему-то простому, но просто не вижу этого.
Когда я запускаю это:
In [1]: from hello_ext import *
In [2]: import numpy as np
In [3]: say_hello(np.array([3,4,5]))
Segmentation fault (core dumped)
Мой Makefile:
PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
TARGET = hello_ext
$(TARGET).so: $(TARGET).o
g++ -std=c++11 -shared -Wl,--export-dynamic $(TARGET).o -L$(BOOST_LIB) -lboost_python -lboost_numpy -L/usr/lib/python$(PYTHON_VERSION)/config -lpython$(PYTHON_VERSION) -o $(TARGET).so
$(TARGET).o: $(TARGET).cpp
g++ -std=c++11 -I$(PYTHON_INCLUDE) -I$(BOOST_INC) -fPIC -c $(TARGET).cp