With boost python, how to pass a tuple of lists from python to C++ ? Code attached : line 12 crashes ?! Googling but no fix for now.
Expected results should look like this: >> make; python dummyTest.py g++ -I/usr/include/python2.7 -o dummy.so -shared -fPIC dummy.cpp -lboost_python -lboost_numpy doStuffs nbInt 3 ptrInt ...... ptrInt[0] = 1 ptrInt[1] = 2 ptrInt[2] = 3 nbfloat 3 ptrFloat .... ptrFloat[0] = 1.2 ptrFloat[1] = 2.3 ptrFloat[2] = 3.4 -- Bonne journée, Franck HOUSSEN
#!/usr/bin/env python import numpy as np lsInt = np.array([1, 2, 3], dtype='int32') lsFloat = np.array([1.2, 2.3, 3.4], dtype='float32') t = (lsInt, lsFloat) import dummy dummy.doStuffs(t)
Makefile
Description: Binary data
#include <iostream>
#include <boost/python.hpp>
#include <boost/python/numpy.hpp>
namespace bp = boost::python;
namespace np = boost::python::numpy;
void doStuffs(boost::python::tuple & t) {
std::cout << "doStuffs" << std::endl;
np::ndarray lsInt = boost::python::extract<np::ndarray>(t[0]);
int nbInt = lsInt.shape(0);
std::cout << "nbInt " << nbInt << std::endl;
int * ptrInt = reinterpret_cast<int*>(lsInt.get_data());
std::cout << "ptrInt " << ptrInt << std::endl;
for(auto k = 0; ptrInt && k < nbInt; k++) {std::cout << "ptrInt[" << k << "] = " << ptrInt[k] << std::endl;};
np::ndarray lsFloat = boost::python::extract<np::ndarray>(t[1]);
int nbFloat = lsFloat.shape(0);
std::cout << "nbFloat " << nbFloat << std::endl;
float * ptrFloat = reinterpret_cast<float*>(lsFloat.get_data());
std::cout << "ptrFloat " << ptrFloat << std::endl;
for(auto k = 0; k < nbFloat; k++) {std::cout << "ptrFloat[" << k << "] = " << ptrFloat[k] << std::endl;};
}
BOOST_PYTHON_MODULE(dummy) {
def("doStuffs", doStuffs);
}
_______________________________________________ Cplusplus-sig mailing list [email protected] https://mail.python.org/mailman/listinfo/cplusplus-sig
