Как передать необработанный указатель на Boost.Python?

Я пытаюсь использовать 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*)
7
задан Michael Petrotta 13 November 2011 в 03:21
поделиться