官方文档: https://pybind11.readthedocs.io/en/stable/basics.html#header-and-namespace-conventions
首先pip3 install pybind11
, 一般把源码和binding file分开, 这里为了方便写在一起:
#include <pybind11/pybind11.h>
namespace py = pybind11;
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
使用如下命令编译
$ c++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`
-O3
参数用于优化程序, debug用O2, release用O3, O3无法修改
-Wall
选项意思是编译后显示所有警告, -W
显示容易出错的警告, -w
忽略警告, 一般-W -Wall
一起使用
python3 -m pybind11 --includes
指定pybind11和python头文件的库, 对于python2.7改成python即可, 同时python2不需要特殊后缀, 将example`python3-config --extension-suffix`改为example.so即可
对于编译完且含有setup.py的文件夹, 使用pip3 install .
安装包即可
网友评论