以下为授权转载的一盎司科技公众号文章
PyBind11是一个轻量级的C++库,主要用于创建现有C++代码的Python绑定,使用了很多C++新特性。
下面将简单介绍使用PyBind11将C++类提供给Python使用的基本步骤,关于PyBind11的详细内容可参考官方文档(https://pybind11.readthedocs.io/en/stable/)。
示例代码地址:
GitHub地址:https://github.com/iounce/python-cpp-demo
Gitee地址:https://gitee.com/iounce_admin/python-cpp-demo
环境
-
Windows操作系统:Windows10(21H2,19044.1766)
-
C++开发环境:Visual Studio 2022社区版
-
Python:3.10.4
-
PyBind11:2.11.1
安装PyBind11
直接执行命令pip install pybind11安装即可:
编写C++文件
这里编写一个模板函数和一个继承类的示例,具体如下:
编写PyBind11文件
需要按照PyBind11文件的格式来编写,模板类需要指定具体类型才能正常使用。继承类则需要定义基类,并增加函数的说明,可以自定义Python中使用的函数名。具体如下:
编写setup.py文件
编写setup.py文件主要是为了导出Python包,需要指定包名,引用路径,实现文件等。具体如下:
生成Python包
直接使用命令python setup.py build编译生成最终包即可,最终会在build目录生成一个pyd为后缀的Python包文件:
编写Python测试程序
简单起见,先将生成的Python包文件pybind11_demo.cp310-win_amd64.pyd(环境不同生成文件名可能有差异)拷贝到当前目录,然后编写测试程序main.py并执行:
PyBind11可以使用C++里面的很多写法,就是格式比较有特点,调用C++函数或类都很方便,也是一种不错的选择。