J'essaie d'utiliser Boost.Python comme un wrapper pour une fonction C++ qui reçoit un pointeur, modifie les données (gérées sur le côté Python comme un tableau numpy par exemple) et retourne. Comment obtenir Python numpy et Boost.Python pour collaborer et pour me donner le pointeur brut à l'intérieur de la fonction?Comment passer un pointeur brut à Boost.Python?
#include <boost/python.hpp>
namespace
{
char const *greet(double *p)
{
*p = 2.;
return "hello world";
}
}
BOOST_PYTHON_MODULE(module)
{
boost::python::def("greet", &greet);
}
En Python lorsque je tente,
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
Je reçois l'erreur,
Boost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)
Oui, j'ai essayé aussi. Le message d'erreur lit ensuite, Boost.Python.ArgumentError: les types d'arguments Python dans <...> .module.greet (LP_c_double) ne correspond pas à la signature C++: greet (double *) – rych