很多时候自己写的c++模块想导出到python,然后就可以用python写一些日常脚本,比如说登陆然后完成一整套操作流程再退出的流程,用python来写随时可以改而且不用重编,很方便。
远古时期将python导出到python的方法包括swig、boost::python,但是自从pybind11出来以后,一切都变得格外简单了。这里记录一下pybind11在mac里面的安装使用方法。
首先安装python3:
brew install python3
然后在python3中安装pybind11:
python3 -m pip install pybind11
这样就装好了,写一个简单的cpp来测试一下,比如说pybind11_example.cpp:
#include
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(pybind11_example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
编译:
clang++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` pybind11_example.cpp -o pybind11_example`python3-config --extension-suffix` `python3-config --ldflags`
这样就会生成pybind11_example.cpython-37m-darwin.so,在有这个so的目录中运行python3,就可以调用其中的函数了: