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

通过pybind11来实现python调用C++接口(一)有小伙伴很好奇 怎么样实现 python 调用 C 接口 哈哈 手把手教程来了

大家好,欢迎来到IT知识分享网。

有小伙伴很好奇,怎么样实现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)

执行结果:

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/182594.html

(0)
上一篇 2025-07-05 07:20
下一篇 2025-07-05 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信