我試圖使用Boost.Python作爲接收指針的C++函數的包裝,修改數據(在Python端作爲numpy數組進行管理)並返回。我如何獲得Python numpy和Boost.Python進行協作併爲我提供函數內的原始指針?如何將一個原始指針傳遞給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*)
是的,我想這一點。然後,將錯誤消息讀取, Boost.Python.ArgumentError:在 <...> .module.greet(LP_c_double) 沒有匹配C++的Python參數類型簽名: 的greet(雙*) – rych