使用boost.python包装c++,使python可以调用c++库

其他实现方法

  • pybind11
    优点是简单,缺点是只能支持c++11

  • swig
    需要借助python的构建工具,感觉比较复杂

测试样例

code

  • test_boost.cpp
//
// Created by tqc on 2020/1/9.
//
#include <boost/python.hpp>


char const* greet()
{
    return "hello, world";
}

BOOST_PYTHON_MODULE(test_boost)
{
    using namespace boost::python;
    def("greet", greet);
}
  • test_boost_compile.sh
g++ test_boost.cpp -I /home/tqc/anaconda3/envs/tf2/include/boost \
 -I /home/tqc/anaconda3/envs/tf2/include/python3.6m \
 -L /home/tqc/anaconda3/envs/tf2/lib \
 -lboost_python36 -lpython3.6m \
--std=c++98 -O3 -shared  -fPIC  -o test_boost.so
  • test_boost.py
import test_boost

ans=test_boost.greet()
print(ans)

gcc是从右到左的,test_boost.cpp需要写在左边。

TODO

在make与cmake中实现这一过程

发布了281 篇原创文章 · 获赞 35 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/TQCAI666/article/details/103910470