欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

pybind11 的使用

最编程 2024-03-12 15:28:21
...

官方文档: 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 .安装包即可