如果我想使用boost::numpy,我需要调用boost::python::numpy::initialize(),但是每当我提取boost::python::list的元素时,就会得到一个boost::python::throw\u error\u already\u set exception。你知道吗
我写了一个小例子:
#include <boost/python.hpp>
#include <boost/python/numpy.hpp>
#include <vector>
template <class T>
boost::python::list stdvector2pylist(const std::vector<T> &stdvector) {
boost::python::list pylist;
for (auto i_T : stdvector ) {
pylist.append(i_T);
}
return pylist;
}
template< typename T >
std::vector< T > pylist2stdvector( const boost::python::list& pyList) {
auto stdVector = std::vector<T>(len(pyList));
for (unsigned i_T = 0; i_T < len(pyList); ++i_T) {
stdVector[i_T] = boost::python::extract<T>(pyList[i_T]);
}
return stdVector;
}
int main(int argc, char **argv) {
Py_Initialize();
boost::python::numpy::initialize();
std::vector<std::string> words{"1", "2", "3"};
boost::python::list piwords = stdvector2pylist(words);
std::vector<std::string> reWords = pylist2stdvector<std::string>(piwords);
}
如果我注释boost::python::numpy::initialize();它就可以正常工作。 如果列表是从Python脚本发送的,那么它可以工作。你知道吗
我正在链接boost 1.65和Python 3.6.1。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐