百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

通过pybind11来实现python调用C++接口(一)

off999 2025-05-14 15:45 33 浏览 0 评论

有小伙伴很好奇,怎么样实现python调用C++接口?哈哈,手把手教程来了。

第一步:我们需要安装pybind11这个纯头文件的库,目前该库支持c++11及以上版本,在你的环境中通过命令行输入:

apt-get install python3-dev
apt-get install python3-pip
pip install pybind11

第二步:通过宏“PYBIND11_MODULE”,传入Python 模块名和 C++ 实例对象名的两个参数:

// pybind.cpp
#include <pybind11/pybind11.h>        // pybind11的头文件

namespace py = pybind11;               // 给pybind11命名空间名称用个简单的替换

PYBIND11_MODULE(pythondemo, m)             // 定义Python模块,名称为pythondemo
{
  m.def("info",                        // 定义模块pythondemo一个叫info的Python函数
    []()                              // lambda表达式
    {
      py::print("当前C++的版本是", __cplusplus);  // pybind11自己的打印函数
    }
  );  

  m.def("add",                       // 定义模块pythondemo一个叫add的Python函数
    [](int a, int b)                 // 有参数的lambda表达式
    {
      py::print("a = ", a, " b = ", b);
      return a + b;
    }
  );  
}

第三步:通过命令编译c++源码:

g++ pybind.cpp -std=c++11 -shared -fPIC `python3 -m pybind11 --includes` -o pythondemo`python3-config --extension-suffix`

这条命令之后会产生一个动态库:
pythondemo.cpython-310-x86_64-linux-gnu.so

对上面的这条命令做一下介绍:

g++ pybind.cpp :需要编译的源文件
-std=c++11 -shared -fPIC:编译成动态库
`python3 -m pybind11 --includes` :获得包含路径
-o pythondemo`python3-config --extension-suffix` :生成的动态库名字,pythondemo和C++代码中的模块名保持一致

第四步:写python代码,调用很方便的:

import pythondemo            # 导入pybind11模块

pythondemo.info()            # 调用C++写的函数
x = pythondemo.add(1,2)      # 调用C++写的函数
print(x)

执行结果:


好了,现在环境都应该是可以了,我们下一期讲讲怎么通过class的方式被python调用,以及python如何调用C++常用的string,vector等标准容器。

相关推荐

台式机重装系统win7(台式机怎么重装win7)

下面主要介绍两种方法以重装系统:一、U盘重装系统准备:一台正常开机的电脑和一个U盘1、百度下载“U大师”(老毛桃、大白菜也可以),把这个软件下载并安装在电脑上。2、插上U盘,选择一键制作U盘启动(制作...

字母下划线怎么打出来(字母下的下划线怎么去不掉)

第一步,在电脑上找到文字处理软件WPS,双击即自动新建一个新文档。第二步,在文档录入需要处理的字母和数字,双击鼠标或拖动鼠标选择要处理的内容。第三步,在页面的左上方的横向菜单栏,找到字母U的按纽,点击...

怎么还原电脑上一次的设置(怎么还原电脑初始设置)

恢复出厂设置的方法如下:开机或者重启电脑按住DEL键,进入BIOS.这时有两个选项(一般在右边),一个是LoadFail-SafeDefaults既系统预设的稳定参数.另一个是LoadOp...

wifi加密怎么设置(wifi加密怎么加密)

若你想将自己的无线网改成加密的,可以按照以下步骤操作:1.打开你的路由器管理界面。一般来说,在浏览器地址栏输入“192.168.1.1”或“192.168.0.1”,然后输入用户名和密码登录就可以打...

电脑怎么修改密码(惠普电脑怎么修改密码)

修改电脑的密码方法:第1步:点击电脑左下角的【开始】图标,然后点击“设置”;第2步:在“设置”界面中点击“账户”,然后点击“登录选项”;第3步:可以看到里面有各个类型的密码设置,选择你的密码类型点击它...

win8降级win7(win8降到win7需要改什么设置)
  • win8降级win7(win8降到win7需要改什么设置)
  • win8降级win7(win8降到win7需要改什么设置)
  • win8降级win7(win8降到win7需要改什么设置)
  • win8降级win7(win8降到win7需要改什么设置)
win7修复计算机(win7修复计算机是什么意思)

就是系统的bug修复,简单说就是漏洞修复原因:电脑的系统文件出现损坏造成的。1、尝试开机,若开不了机,需要重启电脑。2、同时按下F8进入系统高级选项模式,选择最后一次正确配置来恢复系统。3、正常进入系...

不受限制的搜索浏览器(不受限制的搜索浏览器怎么解除)

华为手机不能直接控制浏览器搜索内容,但可以通过控制手机上的应用权限来间接控制。比如,您可以禁用某些应用程序的访问权限,以防止它们收集您的搜索数据。此外,您可以使用一些第三方应用程序来控制您的搜索内容,...

免费下载微信电脑版(我要下载微信电脑版)
  • 免费下载微信电脑版(我要下载微信电脑版)
  • 免费下载微信电脑版(我要下载微信电脑版)
  • 免费下载微信电脑版(我要下载微信电脑版)
  • 免费下载微信电脑版(我要下载微信电脑版)
电信wifi管理网站(中国电信wi-fi管理)

中国电信天翼网关一般情况下,登陆地址是http://192.168.0.1,用提供的用户名和密码就可以登陆。电信智能网关登录的方法就是要看电信光纤猫上背面的标签上的登录管理页面的网址以及登录的用户名和...

电脑连不上宽带连接(电脑连接不了宽带)

可能是因为宽带欠费,只要重新缴费就可以了。有可能是因为网线出现了松动,只要把网线拔下,然后重新插上即可。光猫出现了问题,这时可以联系网线的运营商,让工作人员解决宽带连接不上的问题。如果电脑网线连接不上...

打科兴长结节的人很多(打科兴可以减肥吗)

如果没有发热,没有血常规等异常,可以打肺炎疫苗。肺部结节是否能够消失,主要取决于肺部结节产生的原因,其性质是什么。在临床上由于CT、核磁共振这些影像学检查的普及,临床上越来越发现更多的人有肺部结节。投...

office2010安装出错(office2010安装出错,注册表信息中无ose文件)
  • office2010安装出错(office2010安装出错,注册表信息中无ose文件)
  • office2010安装出错(office2010安装出错,注册表信息中无ose文件)
  • office2010安装出错(office2010安装出错,注册表信息中无ose文件)
  • office2010安装出错(office2010安装出错,注册表信息中无ose文件)
life360免费定位(360免费手机定位精确找人)

Insta360X3添加定位功能通常可以通过以下步骤实现: 1. 确保您的Insta360X3相机已连接到手机上的Insta360应用程序,并且相机和手机的蓝牙功能都...

惠普电脑笔记本哪款好(惠普笔记本哪个好用)

惠普有好的机型,有差的机型。不谈型号只谈品牌就是耍流氓;惠普好的机型,轻薄本有envy系列和specter系列,风骚的外观和优良的做工完全对得起这个价格低价位有惠普战66,扩展性好,售价实惠...

取消回复欢迎 发表评论: