其他实现方法
-
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中实现这一过程