Estoy tratando de usar Boost.Python como un contenedor para una función de C++ que recibe un puntero, modifica los datos (administrados en el lado de Python como matriz numpy por ejemplo) y regresa. ¿Cómo hago para que Python numpy y Boost.Python colaboren y me den el puntero sin formato dentro de la función?Cómo pasar un puntero sin formato a 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 cuando intento,
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
consigo el error,
Boost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)
Sí, lo he intentado también. El mensaje de error lee, Boost.Python.ArgumentError: tipos de argumentos Python en <...> .module.greet (LP_c_double) no coincide con la firma C++: greet (double *) – rych