参考文档:

  1. First steps ‒ pybind11 documentation
  2. pybind11的最佳实践

    环境准备

    Linux系统下:
    1. pip3 install pytest
    2. pip3 install pybind11

    Python调用C++

    绑定函数

    首先,我们编写一个C++源文件,命名为example.cpp: ```cpp

    include

    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); }

  1. `PYBIND11_MODULE()`宏函数将会创建一个函数,在由Python发起import语句时该函数将会被调用。模块名字“example”,由宏的第一个参数指定(千万不能出现引号)。第二个参数"m",定义了一个`py::module_`的变量。函数`py::module_::def()`生成绑定代码,将add()函数暴露给Python <br />编译命令:
  2. ```shell
  3. # 会生成example.cpython-36m-x86_64-linux-gnu.so文件
  4. c++ -O3 -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) example.cpp -o example$(python3-config --extension-suffix)

还是在相同目录下运行ipython,进入ipython命令行:

  1. >>> import example
  2. >>> example.add()
  3. 3
  4. >>> example.add(4, 5)
  5. 9

绑定类class