这门课到底在解决什么问题

如果你的日常工作里同时出现 C++ 和 Python,大概率遇到过这种别扭的分工:核心计算、性能敏感的部分用 C++ 写,脚本、配置、数据处理用 Python 写,两边靠文件、命令行参数或者网络接口来回倒腾。能跑,但数据要在两种格式之间转来转去,调试的时候得来回切两套环境,改动一处要重新编译再重启脚本。

这门《C++联合编程实战》针对的就是这个场景。它讲的是把两边真正嵌到一起:让 Python 直接调用你用 C++ 写的扩展库,也让 C++ 程序反过来驱动 Python 解释器执行脚本。学完之后,你手上多的是「在同一个进程里打通两种语言」的具体做法,而不是又一套语法复习。

学完能独立做什么

课程的内容组织是按能力递进的,大致能对应到几件具体的事:

  • 把一个 C++ 函数包装成 Python 可以 import 的模块,在脚本里像调用普通函数一样使用它;
  • 把 C++ 的类暴露给 Python,让 Python 侧能创建对象、访问属性、调用成员方法,而不是只能传值调用函数;
  • 处理两种语言之间的参数传递和返回值转换,包括常见类型和稍微复杂一点的数据结构;
  • 在 C++ 程序里初始化 Python 虚拟机、加载并执行 Python 脚本、在两种代码之间来回取数据;
  • 根据自己的需要定制解释器的行为,而不是完全依赖默认配置。

这几件事单独拿出来都不算炫技,但组合起来就是一条完整链路:从写扩展、到被调用、到反向驱动的全过程。做过一遍之后,再遇到「Python 太慢想用 C++ 补」「C++ 里想用 Python 做灵活配置」这类需求,你会知道从哪儿下手,而不是先搜一圈再拼凑。

资料的组织方式和难度分布

内容按主题分成若干章节,前一部分集中讲 Python 侧的 C/C++ 扩展库,先解决模块和函数层面的调用,再进到类扩展——这一步的跨度比看上去大,因为涉及对象生命周期和引用计数,很多人卡在这里。后半部分转向反方向,讲 Python 虚拟机的定制和 C++ 调用 Python 脚本。

配套的资料以章节为单位附带,主要是讲解过程中用到的示例代码和说明图。它不是那种「先看完一百页文档再动手」的铺法,而是讲一段、配一段可运行的东西。对自学的人来说,这一点比目录有多长更重要:你能在每一节结束后立刻验证自己有没有理解对。

适合什么基础,不适合什么基础

这门课的前提写得很直白:需要有一定 C++ 基础。具体来说,指针、引用、类与继承、编译链接流程这些得是熟悉的,否则类扩展那一章会非常吃力,因为你分不清报错是来自语言本身还是来自两种语言的交界处。Python 侧的要求反而低一些,会写基本的脚本、知道模块和函数怎么用就够了,不需要你已经是 Python 高手。

如果你是纯 Python 背景、C++ 只在学校里写过作业,建议先把 C++ 的编译和内存模型补扎实再来看,不然容易在环境配置阶段就耗掉耐心。反过来,如果你本来就是 C++ 方向,只是想让自己的程序能嵌入脚本能力,后半部分会更贴合你的需求。

该怎么用这份资料

建议按章节顺序走,不要跳着看。模块调用和类扩展之间有依赖关系,虚拟机那一部分又建立在前面理解清楚边界的前提下。每一节的示例都自己敲一遍、编译一遍,比只看讲解有效得多——跨语言编程的坑大多是环境、编译选项、类型转换这类只有动手才会暴露的问题。

如果你时间有限,又只想解决眼前一个具体问题,可以先判断它属于哪个方向:是 Python 要调 C++,还是 C++ 要调 Python,然后直接进对应的章节,把那一部分吃透。剩下的当作以后备用。这门课的价值不在于「学完一门语言」,而在于让你在两种语言之间多一种工程上的选择。

课程目录

📁 第6章Python的CC++扩展库_类扩展 第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++扩展库_模块和函数 第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++调用python 第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章课程介绍和环境准备 第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扩展示例 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的视频播放项目示例 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语法快速入门 02.12-python _list数据结构内部存储分析.mp4
 [15.6 MB] 02.14-python_tuple元组.mp4
 [21.3 MB] 02.16-python_dictionary代码演示.mp4
 [33.4 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的while循环语句.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.23-Python的lambda表达式.mp4
 [15.9 MB] 02.21-python的函数返回值的多种形式.mp4
 [26.7 MB] 02.25-python面向对象编程构造函数和析构函数.mp4
 [29.0 MB] 02.19-Python的for循环语句.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的闭包函数closure.mp4
 [19.0 MB] 02.28-python的模块和包的寻址引用分析.mp4
 [18.7 MB] 02.01-print输出格式设定和代码演示.mp4
 [35.4 MB] 📁 第3章Python CTypes访问CC++动态链接库 第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源码跨平台的编译 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虚拟机 祝您学习愉快! 学有所成,前程似锦!