我正在尝试使用Boost.Python作为C++函数的包装器,该函数接收指针、修改数据(在Python端以numpy数组的形式管理),并返回修改后的结果。如何让Python numpy和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);
}
在Python中,当我尝试时,
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
我遇到了错误,
Boost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)