Boost.Python'u bir işaretçi alan bir C++ işlevi için sarıcı olarak kullanmaya çalışıyorum, verileri değiştirir (örneğin Python tarafında örnek olarak sayılır) ve döndürür. Python numpy ve Boost.Python'u nasıl işbirliği yapacak ve işlev içinde işlenmemiş işaretçiyi nasıl verebilirim?Bir ham işaretçi Boost.Python'a nasıl iletilir?
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);
}
deniyorum, ben hata alıyorum
import numpy as np
a = np.empty([2], dtype=np.double)
raw_ptr = a.data
print cmod.greet(raw_ptr)
,
Muhtemelen depolama ham bir işaretçi almak için numpy ctypes arayüzü kullanmak gerekecektirBoost.Python.ArgumentError: Python argument types in
<...>.module.greet(buffer)
did not match C++ signature:
greet(double*)
Evet, ben de denedim. Hata iletisi okur, Boost.Python.ArgumentError: <...> .module.greet (LP_c_double) Python argümanı türleri C++ imzasıyla eşleşmedi: selamlama (çift *) – rych