私はBoost.Pythonをポインタを受け取るC++関数のラッパーとして使用しようとしています(例えばnumpy配列としてPython側で管理されている)データを修正して返します。どのようにしてPythonのnumpyとBoost.Pythonをコラボレーションさせ、関数内の生のポインタを私に渡すのですか? 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);
}
私がしようと、
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:Pythonの引数型が <...> .module.greet(LP_c_double) と一致しませんでした。C++の署名: greet(double *) – rych