Boost.Python을 포인터를받는 C++ 함수의 래퍼로 사용하려고합니다. 예를 들어 파이썬 측에서 numpy 배열로 관리되는 데이터를 수정하고 반환합니다. 파이썬 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);
}
내가하려고, 난 오류가
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
,
당신은 아마 저장에 원시 포인터를 얻기 위해 NumPy와의하는 ctypes 인터페이스를 사용해야합니다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