结合boost和ctypes

时间:2018-11-21 15:46:48

标签: python c++ boost ctypes

我正在尝试将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)

0 个答案:

没有答案