C++如何调用Python代码

C++和Python进行交互一般有两种情况:

C++代码中内嵌入Python:当C++项目中有部分功能需要经常发生变更时,以此来达到功能需求的灵活性,那么将这部分功能通过Python实现,再通过C++调用即可。这种一般会在原型开发、插件系统、热更新等场景使用。

C++扩展Python:当Python项目中遇到性能瓶颈时,常规做法是将性能瓶颈部分进行剥离,使用C++封装成Python可调用的模块,比如so库。

这里推荐使用pybind11库,一个C++轻量级库,专用于C++和Python之间进行互操作,该库的设计理念是让开发者能够在C++和Python之间轻松的进行交互,无需对底层Python的 C API进行深入了解。

接下来着重讲解一下如何在C++中调用Python:

方法一:使用Python提供给C++的API

当前使用最多的方式是将Python代码编译成文本类型的动态链接库,C++代码中只需定义你调用Python代码的函数;

这种方式与在C++中直接启用一个Python解释器并无差异,通过Python解释器执行调用的Python代码,执行完成后释放资源,即可完成调用目的。

在pybind11中提供了初始化Python解释器的功能,需要对Python解释器的管理机制进行理解;当对程序进行启动时,首先对Python解释器进行初始化,程序执行完成后,需要清理Python解释器,确保所有Python对象都能够正确释放,避免造成资源未得到正确释放和内存泄漏等。

而C++与Python能够进行交互的核心是:数据转换。pybind11中提供了丰富的类型,能够自动转换大部分的数据类型,比如传递容器、基本类型、以及自定义类型等。

Python中提供的C++调用主要API

参数传递方式

方法二:调用Python脚本

不推荐使用这种方式,这种方法的缺陷是获取函数返回值不太便利,具体的做法可自行上网搜索教程,这里不在展开讲解。

如果直接调用Python脚本,那么C++调用Python代码的威力是发挥不出来的,这样的调用连单向都称不上,真正有用的是两者互相调用,Python的脚本可以调用C++的函数或类、接受来自C++的传参参数、又能够将返回值返回到C++,而C++又可以将函数暴露给Python,这样就实现了C++与Python的互相调用。

相关推荐
大不点wow20 分钟前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
阿里嘎多学长20 分钟前
2026-07-22 GitHub 热点项目精选
开发语言·程序员·github·代码托管
小保CPP23 分钟前
OpenCV C++将多张图像合并为webp动图
c++·人工智能·opencv·计算机视觉
吃饱了得干活24 分钟前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
噢,我明白了25 分钟前
Java中日期和字符串的处理
java·开发语言·日期
爱刷碗的苏泓舒25 分钟前
C 语言 if-else 与 switch-case 分支语句对比
c语言·开发语言
ikun_文27 分钟前
Python进阶—函数编程
python·pycharm
MC皮蛋侠客31 分钟前
uv 系列(三):依赖、锁文件与环境同步——可重复构建的核心
python·uv
量化吞吐机34 分钟前
2026年交易想法转Python,中间先补规则转译
人工智能·python
-银雾鸢尾-35 分钟前
C#中的泛型约束
开发语言·c#