getfromcode后端开发 会员免费

【C++教程】C++联合编程实战(完结)

这门课的主题很明确:把 C++ 和 Python 放在同一个进程里协同工作。它不是讲两种语言各自的语法,而是解决一个具体工程问题——性能敏感的算子、已有 C/C++ 库、需要嵌入脚本能力的宿主程序,怎么和 Python 侧的调用方对接。资料包里的内容集中在扩展库的构建、模块与函数导出、类扩展,以及

单课价¥29.90新品 上架
会员价 会员免费开通会员,全站课程按额度无限下载套餐详情
4 人关注 更新于 2026-09-08 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

购买方式开通会员 · 全站免费下单课购买 · 仅本课

支付成功后自动显示网盘下载链接;链接失效可联系客服免费补链,永久有效。

正版保障 极速发货 售后无忧

这门课的主题很明确:把 C++ 和 Python 放在同一个进程里协同工作。它不是讲两种语言各自的语法,而是解决一个具体工程问题——性能敏感的算子、已有 C/C++ 库、需要嵌入脚本能力的宿主程序,怎么和 Python 侧的调用方对接。资料包里的内容集中在扩展库的构建、模块与函数导出、类扩展,以及 Python 虚拟机定制与 C++ 调用 Python 这几块,覆盖了双向调用的两条路径。

技术栈与前提假设

默认的编译环境是 CPython 的 C API 路线,也就是常说的「手写扩展」。这条路不依赖 pybind11、SWIG 之类的绑定生成器,代价是代码量大、引用计数要自己管,好处是控制粒度最细、对运行时行为的理解最直接。学过 pybind11 的人回头看这部分,往往能明白那些自动生成的包装层到底替你做了什么,比如 GIL 的获取与释放、PyObject 的生命周期、参数解析与返回值转换。

前置要求是能读懂 C++ 的类、模板基础语法和编译链接流程,知道头文件和静态库/动态库的区别。Python 侧只需要会写模块、装过包、了解 import 机制即可,不需要有 CPython 源码阅读经验。

项目结构与可复用模块

资料的组织方式是按能力块划分的:模块与函数导出、类扩展、虚拟机定制三个方向。每一块都对应一个可独立验证的最小工程,而不是一个越来越大的单体项目。

  • 模块与函数层:PyModuleDef、方法表、参数解析这一套。这部分代码几乎是模板化的,一旦跑通,后续加函数只是往方法表里追加条目。适合抽成项目里的公共脚手架。
  • 类扩展层:把 C++ 类暴露成 Python 类型,涉及 tp_new、tp_init、tp_dealloc、成员访问与方法的注册。这里最容易出问题的是对象生命周期和继承关系,资料里给的写法可以直接对照自己的封装层做改造。
  • 虚拟机定制与反向调用:C++ 侧初始化解释器、加载脚本、取函数、传参并接收返回值的完整流程。这一块在需要把 Python 当嵌入式脚本引擎的场景里复用价值最高。

这三层的划分方式是这门资料里比较实用的部分:先让单个函数跑通,再扩展成类,最后把调用方向反过来。按这个顺序推进,调试成本是递增的,但每步都有可运行的中间态。

工程上容易踩的点

联合编程的坑基本不在语法上,而在运行时的边界处。引用计数泄漏在短脚本里看不出来,长驻进程里会缓慢涨内存;GIL 在纯 C++ 线程里没持有就去碰 Python 对象会直接崩;异常跨语言边界传递时,C++ 抛出的异常进不了 Python 的异常体系,Python 抛出的异常也得转成 C++ 能处理的形式。资料里对这些边界有对应的处理写法,建议边看边把每个报错都复现一遍,比读完代码更有用。

另外,编译链接参数往往比源码本身更折腾。扩展模块的命名、Python 头文件路径、导出符号在 Windows 和 Linux 下不一致,这些细节如果只靠看视频很容易漏。资料包里附带的资料文件正好是用来对照编译配置的,建议和源码并排打开。

怎么用这份资料

合适的用法是:先按模块与函数那一章,自己从头写一个能 import 的最小扩展并编译成功;再对照类扩展那一章,把手头一个真实的 C++ 类包成 Python 类型;最后做一次反向调用,写个宿主程序加载脚本并调用其中的函数。三步都跑通,这条链路就算打通了。只看不写的话,引用计数和 GIL 这两块几乎不可能形成手感。

它更适合当参考手册而非线性课程:遇到具体问题时翻到对应章节,把示例改造成自己项目里的形态。对已经写过 Python 扩展但只停留在复制模板阶段的人,这套内容的价值在于把每一行包装代码背后的运行时行为讲清楚。

【C++教程】C++联合编程实战(完结)

深入C++与Python的联合编程实战

编辑点评

系统学习C++与Python扩展库的创建与调用,适合有一定C++基础并希望拓展Python应用的开发者。

⭐ 编辑推荐

本课程从基础到实战,深入讲解C++与Python的联合编程,涵盖扩展库创建、模块函数、类扩展、虚拟机定制等多个方面。

✨ 课程亮点

✦C++与Python联合编程实战
✦系统学习扩展库创建与调用
✦适合有一定C++基础的开发者

课程目录

第6章Python的CC++扩展库_类扩展9 集
  • 第6章Python的CC++扩展库_类扩展资料.png [493.5 KB]
  • 06.4-扩展库类添加成员变量tp_members并在构造函数中初.mp4 [50.6 MB]
  • 06.1-扩展库新增类步骤分析.mp4 [22.5 MB]
  • 06.8-扩展库类的循环引用内存泄漏问题设定垃圾回收函数解决.mp4 [89.4 MB]
  • 06.3-类扩展构造函数和析构函数及关键字参数传递.mp4 [72.1 MB]
  • 06.7-扩展库的类添加成员函数.mp4 [33.6 MB]
  • 06.2-完成第一个扩展库类的示例完成类空间分配tp_new函数和.mp4 [123.0 MB]
  • 06.6-扩展库类添加属性并定义get和set的属性函数.mp4 [70.4 MB]
  • 06.5-扩展库字符串和PyObject成员变量添加和析构函数中的.mp4 [58.6 MB]
第5章Python的CC++扩展库_模块和函数23 集
  • 第5章Python的CC++扩展库_模块和函数资料.zip [1.8 MB]
  • 05.12-扩展库传递一维和二维元组tuple参数并分析tuple源.mp4 [56.4 MB]
  • 05.03-Python源码PyObject结构分析和引用计数代码分.mp4 [35.3 MB]
  • 05.05-使用VS2015创建好python扩展库项目配置和编译完.mp4 [66.0 MB]
  • 05.01-完成python的c扩展库模块入口创建和扩展函数代码.mp4 [43.4 MB]
  • 05.16-扩展库返回新创的list和参数list并对引用计数加一.mp4 [37.2 MB]
  • 05.04-PyLongObject与PyObject关系讲解及源码.mp4 [48.1 MB]
  • 05.08-传递浮点数并通过PyFloat_Check检测参数类型.mp4 [41.7 MB]
  • 05.22-扩展库函数返回dictionary字段.mp4 [20.4 MB]
  • 05.13-扩展库返回一维和二维元组tuple.mp4 [28.1 MB]
  • 05.09-PyUnicodeObject结构分析和扩展库返回字符串.mp4 [48.8 MB]
  • 05.02-使用distutils模块完成扩展库的编译并在win_l.mp4 [54.0 MB]
  • 05.11-扩展库传递关键字参数METH_KEYWORDS.mp4 [51.8 MB]
  • 05.07-基于PyArg_ParseTuple给扩展库传递整形参数.mp4 [27.3 MB]
  • 05.20-扩展库PyDict_Next迭代访问字典内容并封装PyO.mp4 [27.0 MB]
  • 05.06-基于vs2015配置python扩展库自动部署和调试.mp4 [36.5 MB]
  • 05.18-扩展库根据关键字读取字典并清理空间.mp4 [42.8 MB]
  • 05.19-扩展库函数参数遍历字典PyDict_Keys并清理相应空.mp4 [57.5 MB]
  • 05.10-扩展库接收字符串参数传递编码测试.mp4 [27.1 MB]
  • 05.14-扩展库读取list参数遍历显示并检测格式错误设置异常字符.mp4 [37.2 MB]
  • 05.15-扩展库添加_插入_修改和删除list参数中元素.mp4 [37.2 MB]
  • 05.17-扩展库读取Dictionary参数并处理引用计数解决内存.mp4 [57.6 MB]
  • 05.21-扩展库处理dict参数插入修改和删除数据.mp4 [50.7 MB]
第8章 Python虚拟机定制c++调用python9 集
  • 第8章 Python虚拟机定制c++调用python必看.zip [1.8 MB]
  • 08.1-完成cpp调用python的环境准备和虚拟机初始化.mp4 [26.3 MB]
  • 08.7-c++给python传递函数和类PyModule_Ad.mp4 [26.6 MB]
  • 08.3-c++读取python脚本中的dictionary类变.mp4 [42.5 MB]
  • 08.2-c++运行python脚本文件和脚本字符串并增加异常处.mp4 [35.5 MB]
  • 08.5-c++调用python函数并传递list参数并获取返回.mp4 [47.1 MB]
  • 08.6-c++给python传递变量的两种方法PyObject.mp4 [19.0 MB]
  • 08.8-c++读取python模块并给python主模块传递模.mp4 [20.0 MB]
  • 08.4-c++调用python的类实例化对象访问成员函数和成员.mp4 [35.8 MB]
第1章课程介绍和环境准备6 集
  • 第1章课程介绍和环境准备资料.zip [1.8 MB]
  • 01.3-PythonSDK在Mac中安装和配置.mp4 [49.0 MB]
  • 01.4-pycharm在Mac中安装和配置.mp4 [22.7 MB]
  • 01.2-pycharmIDE在Windows中的安装配置.mp4 [25.0 MB]
  • 01.1-PythonSDK在windows中的安装和配置.mp4 [48.3 MB]
  • 01.5-PythonSdk和pycharm在ubuntu中安装和.mp4 [53.8 MB]
第7章 Python的CC++类扩展库_多线程GIL及ffmpeg扩展示例8 集
  • 07.3-c++的python扩展函数中保存线程环境释放线程锁.mp4 [40.8 MB]
  • 07.6-创建XFFmpeg类导入ffmpeg相关库问题并设置完测.mp4 [93.2 MB]
  • 07.4-基于ffmpeg扩展库示例环境和项目创建.mp4 [53.1 MB]
  • 07.2-在c++扩展函数中用创建线程PyGILState_Ens.mp4 [79.2 MB]
  • 07.8-在python的web程序中访问ffmpeg扩展库示例.mp4 [63.9 MB]
  • 07.7-完成视频信息读取和开放属性接口.mp4 [34.6 MB]
  • 07.1-python全局解释器锁GIL调度策略分析和获取释放的a.mp4 [24.3 MB]
  • 07.5-完成了扩展库PyFFmpeg对象创建_初始化和析构.mp4 [61.8 MB]
第9章基于python_qt_ffmpeg的视频播放项目示例20 集
  • 09.09-完成扩展库中打开ffmpeg解码器.mp4 [81.0 MB]
  • 09.03-完成项目创建并初始化python虚拟机.mp4 [39.5 MB]
  • 09.19-完成了PyPlayer在linux的qtcreator.mp4 [42.2 MB]
  • 09.15-完成视频播放器并根据fps控制播放速度.mp4 [66.5 MB]
  • 09.18-演示linux安装qt和编译ffmpeg源码.mp4 [25.9 MB]
  • 09.01-py_ffmpeg_python综合项目需求和用到的库.mp4 [14.6 MB]
  • 09.06-导入pyffmpeg扩展库完成视频的打开.mp4 [34.6 MB]
  • 09.17-PyFFmpeg移植到linux并测试.mp4 [37.0 MB]
  • 09.13-重载qt显示视频窗口完成图像设置和视频绘制函数.mp4 [79.7 MB]
  • 09.11-完成扩展库pyffmpeg的尺寸和像素格式转换上下文初.mp4 [90.9 MB]
  • 09.02-依赖的QT环境安装和代码示例.mp4 [73.5 MB]
  • 09.05-qt按钮事件的Open槽函数中调用python函数.mp4 [74.5 MB]
  • 09.07-完成pyffmpeg扩展库的Read读取视帧函数.mp4 [64.2 MB]
  • 09.20-Python扩展库和PyPlayer移植到MacOS.mp4 [89.5 MB]
  • 09.14-完成python图像设置接口并完成视频播放.mp4 [77.5 MB]
  • 09.08-在c++线程中调用python的main函数解决GIL.mp4 [55.9 MB]
  • 09.10-完成扩展库pyffmpeg的decode解码函数并完成.mp4 [85.6 MB]
  • 09.12-完成扩展库pyffmpeg尺寸转换空间申请释放和处理.mp4 [59.4 MB]
  • 09.04-c++读取python的配置项改变窗口大小和标题.mp4 [54.7 MB]
  • 09.16-PyLplayer移植到linux步骤分析讲解.mp4 [20.4 MB]
第2章Python语法快速入门32 集
  • 02.12-python _list数据结构内部存储分析.mp4 [15.6 MB]
  • 02.32-python多进程编程分析.mp4 [22.1 MB]
  • 02.27-python类的继承和函数重载.mp4 [26.3 MB]
  • 02.03-python注释分号和换行基础语法.mp4 [22.1 MB]
  • 02.34-Python多线程编程互斥锁和通信队列.mp4 [84.6 MB]
  • 02.18-python鐨剋hile寰幆璇彞.mp4 [17.0 MB]
  • 02.02-print输出到文件并输出csv格式的excel表格.mp4 [25.1 MB]
  • 02.07-python的算数运算符.mp4 [23.0 MB]
  • 02.17-python的if条件判断语法.mp4 [57.3 MB]
  • 02.33-python多进程编程代码演示.mp4 [29.5 MB]
  • 02.20-python函数的参数默认可变和关键字参数.mp4 [36.4 MB]
  • 02.04-python的基础类型分析和整形浮点型的内部存储分析.mp4 [33.2 MB]
  • 02.10-python字符串多行处理的三种方法.mp4 [20.5 MB]
  • 02.06-python复数的C语言内部结构分析.mp4 [14.8 MB]
  • 02.30-python导入import模块module的路径设置.mp4 [23.9 MB]
  • 02.08-python字符集问题分析.mp4 [16.2 MB]
  • 02.26-python类的普通成员变量和私有成员变量.mp4 [34.3 MB]
  • 02.24-Python函数中变量的作用域scope.mp4 [32.2 MB]
  • 02.31-python导入包和子包.mp4 [48.0 MB]
  • 02.21-python的函数返回值的多种形式.mp4 [26.7 MB]
  • 02.25-python面向对象编程构造函数和析构函数.mp4 [29.0 MB]
  • 02.19-Python鐨刦or寰幆璇彞.mp4 [21.1 MB]
  • 02.09-python字符串的访问和截取方法.mp4 [26.1 MB]
  • 02.05-python布尔bool类型内部存储分析.mp4 [13.6 MB]
  • 02.11-python字符串拼接和格式化.mp4 [20.1 MB]
  • 02.13-python_list数据访问插入删除代码示例.mp4 [31.4 MB]
  • 02.35-python的异常处理抛出和自定义.mp4 [38.2 MB]
  • 02.29-python模块导入几种方式.mp4 [22.8 MB]
  • 02.15-python_dictionary存储hash表分析.mp4 [13.9 MB]
  • 02.22-python鐨勯棴鍖呭嚱鏁癱losure.mp4 [19.0 MB]
  • 02.28-python的模块和包的寻址引用分析.mp4 [18.7 MB]
  • 02.01-print输出格式设定和代码演示.mp4 [35.4 MB]
第3章Python CTypes访问CC++动态链接库28 集
  • 第3章Python CTypes访问CC++动态链接库文档.zip [1.8 MB]
  • 03.07-ctypes给c函数传递char字符串和wchar_t宽.mp4 [29.7 MB]
  • 03.08-通过create_string_buffer给c语言传递.mp4 [18.6 MB]
  • 03.06-ctypes整数和浮点数类型参数传递代码示例和异常处理.mp4 [30.9 MB]
  • 03.05-python的ctypes与c语言类型转换分析.mp4 [9.9 MB]
  • 03.14-ctypes给c函数传递结构体对象指针和数组.mp4 [27.7 MB]
  • 03.21-案例-导入鬼火三维引擎完成窗口初始化接口.mp4 [24.0 MB]
  • 03.01-ctypes库介绍和windows下编译动态链接库的说明.mp4 [11.5 MB]
  • 03.16-ctypes传递回调函数给c库函数qsort进行快速排序.mp4 [22.4 MB]
  • 03.13-ctypes为C函数传递数组.mp4 [22.4 MB]
  • 03.02-Python用ctypes调用的windows上C++3.mp4 [30.1 MB]
  • 03.26-案例-完成人物武器添加.mp4 [22.5 MB]
  • 03.12-Ctypes给C++传递指针和修改c++返回指针的值.mp4 [30.8 MB]
  • 03.19-案例-完成ctypes调用的dll项目创建并单例类.mp4 [17.1 MB]
  • 03.22-案例-完成三维场景添加.mp4 [21.1 MB]
  • 03.24-案例-完成md2动画人物模型添加和属性设置.mp4 [16.7 MB]
  • 03.25-案例-完成场景和人物节点三维坐标设定.mp4 [27.7 MB]
  • 03.04-测试的ctypes动态库代码移植到mac中.mp4 [11.9 MB]
  • 03.03-编译linux动态库python的ctypes调用示例.mp4 [58.3 MB]
  • 03.11-通过ctypes获取c函数返回的整形和字符串.mp4 [24.0 MB]
  • 03.09-使用ctypes跨平台mac_linux_windows.mp4 [25.4 MB]
  • 03.18-案例-python与c++联合编程三维引擎示例说明.mp4 [10.0 MB]
  • 03.17-通过ctypes在c函数中调用python的函数.mp4 [25.9 MB]
  • 03.20-案例-完成了python通过ctypes调用dll函数.mp4 [15.8 MB]
  • 03.15-ctypes获取C函数返回结构体对象和指针.mp4 [18.5 MB]
  • 03.27-案例-完成鼠标点击人物挥刀的事件处理.mp4 [67.5 MB]
  • 03.10-使用ctypes调用win32的MessageBox.mp4 [19.0 MB]
  • 03.23-案例-完成主循环和场景摄像机刷新显示.mp4 [15.9 MB]
第4章Python源码跨平台的编译6 集
  • 04.3-python编译后在windows上的环境变量和注册表配.mp4 [40.3 MB]
  • 04.4-python源码在linux上编译配置运行.mp4 [63.4 MB]
  • 04.5-python源码在mac上编译安装和依赖库的编译安装.mp4 [96.8 MB]
  • 04.2-完成python源码在windows中的编译.mp4 [87.7 MB]
  • 04.6-c++python扩展库的开发步骤和发布方法讲解.mp4 [27.5 MB]
  • 04.1-Python源码编译windows环境准备和源码目录结构.mp4 [20.4 MB]

适合人群

  • C++开发者
  • Python开发者
  • 希望拓展Python应用的开发者

🎯 学习收获

  • 掌握C++与Python扩展库的创建
  • 学会模块函数和类扩展
  • 定制Python虚拟机

🎉 祝您学习愉快!