参考文档:
- First steps ‒ pybind11 documentation
- pybind11的最佳实践
环境准备
Linux系统下:pip3 install pytestpip3 install pybind11
Python调用C++
绑定函数
首先,我们编写一个C++源文件,命名为example.cpp: ```cppinclude
namespace py = pybind11;
int add(int i, int j){ return i+j; }
PYBIND11_MODULE(example, m){ // 可选,说明这个模块是做什么的 m.doc() = “pybind11 example plugin”; //def( “给python调用方法名”, &实际操作的函数, “函数功能说明(可选)” ). // py::arg(“i”)=1, py::arg(“j”)=2 类似函数的默认参数,可选 m.def(“add”, &add, “function”, py::arg(“i”)=1, py::arg(“j”)=2); }
`PYBIND11_MODULE()`宏函数将会创建一个函数,在由Python发起import语句时该函数将会被调用。模块名字“example”,由宏的第一个参数指定(千万不能出现引号)。第二个参数"m",定义了一个`py::module_`的变量。函数`py::module_::def()`生成绑定代码,将add()函数暴露给Python。 <br />编译命令:```shell# 会生成example.cpython-36m-x86_64-linux-gnu.so文件c++ -O3 -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) example.cpp -o example$(python3-config --extension-suffix)
还是在相同目录下运行ipython,进入ipython命令行:
>>> import example>>> example.add()3>>> example.add(4, 5)9
