我正在尝试将ctypes参数传递给boost公开的C ++模块。我收到以下错误:
File "ctype_test.py", line 7, in <module>
test_mod.test_boost_func(i)
Boost.Python.ArgumentError: Python argument types in
test_mod.test_boost_func(c_double)
did not match C++ signature:
test_boost_func(double i)
我知道我要传递的类型在C ++函数中没有。我不知道要在Python代码中添加double型是什么。
用于生成boost python模块的C ++代码:
#include <iostream>
#include <array>
#include <boost/python.hpp>
#include <boost/python/args.hpp>
void test_boost_func(double i) {
std::cout << i << std::endl;
}
BOOST_PYTHON_MODULE(test_mod)
{
boost::python::def("test_boost_func", &test_boost_func, (boost::python::arg("i") ));
}
使用ctypes创建并传递参数的python代码:
import ctypes
import test_mod
if __name__ == "__main__":
i = ctypes.c_double(100.0)
test_mod.test_boost_func(i)