Python调用C++之PyBind11

以下为授权转载的一盎司科技公众号文章


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++函数或类都很方便,也是一种不错的选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值