Tôi đang cố gắng sử dụng Boost.Python làm trình bao bọc cho hàm C++ nhận con trỏ, sửa đổi dữ liệu (được quản lý ở phía Python dưới dạng mảng numpy chẳng hạn) và trả về. Làm thế nào để tôi nhận được Python numpy và Boost.Python để cộng tác và cung cấp cho tôi con trỏ thô bên trong hàm?Làm thế nào để vượt qua một con trỏ nguyên để 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);
}
Trong Python khi tôi cố gắng,
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
tôi nhận được lỗi,
Boost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)
Vâng, tôi đã cố gắng điều đó quá. Thông báo lỗi sau đó đọc, Boost.Python.ArgumentError: Các loại đối số Python trong <...> .module.greet (LP_c_double) không khớp với chữ ký C++: chào (double *) – rych