首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Windows 下 VLC-Qt 编译实战:CMake 工具链与依赖排查
📅 2026/10/31 2:51:05
✍️ 爱科研究院
👁 阅读 3,247
简介面向 Windows 平台进行 Qt 与 VLC 集成的开发者这份 vlc-qt 编译资料聚焦播放内核库的获取、编译配置与工程链接问题并完成从依赖包到可用库的衔接适合具备一定 C/Qt 基础、需要在桌面端实现视频播放、流媒体或 QML 界面嵌入的中高级开发者参考。压缩包共 77 个文件约 36.71MB包含 38 个头文件、17 个 CMake 配置、10 个 DLL 与 8 个 LIB 库文件并附带 qmltypes、qmldir 等 QML 元数据同时收入 VLC 3.0.0 依赖包与 vlc-qt 1.1.1 源码包便于对照版本。已有 1920 人学习下载说明其在同类编译资料中具有一定参考价值。包内提供编译后的 debug、release 库以及 Widgets、Core、Qml 等模块产物可直接用于 CMake 工程集成、调试链接和发布验证。借助这些现成库与配置读者能减少环境搭建、版本适配和依赖排查的反复试错也便于定位 QML 注册、库路径与运行库缺失等常见问题。1. Windows 下编译 VLC-Qt为什么现成二进制包十次有八次对不上接手一个 Qt 桌面项目需求是界面里嵌一段本地视频还要能截帧、能拖动进度、能处理播放结束事件。这时候原生 Media Foundation 写起来费劲找一个成熟封装是最省事的路线VLC-Qt 就是常见选项之一。可当你把网上流传的预编译包拿过来往工程里一挂大概率会遇到一串LNK2019或者程序起来就静默退出。原因很朴素那份二进制是对着别人的 Qt 版本、别人的编译器、别人的架构编出来的和你的环境不在一条线上。Windows 上编译 VLC-Qt 这件事本质不是敲几条命令而是先把编译器、Qt、libVLC SDK 这三样东西的位数和运行时库锁死再用 CMake 把源码翻成你自己的 DLL。这篇写给已经会写 Qt 界面、但被这套依赖关系卡住的人也写给想改源码加自定义控件的熟手。2. 工具链先对齐MSVC 还是 MinGWlibVLC SDK 该取哪一份编译失败里最难查的一类不是代码错是环境错。因为环境错报出来的信息往往是链接器的看起来像代码问题实际上从第一行就注定编不过。这一章把三样东西拆开编译器、Qt 二进制包、libVLC SDK讲清楚它们之间哪些属性必须一致哪些可以不一样。2.1 编译器和 Qt 必须同源ABI 不匹配的三种典型症状Qt 在 Windows 上提供两套二进制包一套给 MSVC一套给 MinGW。这两套不是随便哪个都能用它们和编译器是绑定的MSVC 版的 Qt 库文件是.lib.dllMinGW 版的是.a.dll导出的符号修饰规则完全不同。你手上有哪套 Qt就只能用对应的编译器。判断方法很直接看 Qt 安装目录bin下有没有libgcc_s_seh-1.dll、libstdc-6.dll这类文件有就是 MinGW 版再打开qmake -query QT_INSTALL_PREFIX看安装路径里带不带msvc字样带就是 MSVC 版。不匹配报错有三种典型长相记住它们能省掉半天排查。第一种是LNK2038: mismatch detected for _MSC_VER出现在你混用了不同 MSVC 主版本编出来的静态库第二种是LNK1112: module machine type x86 conflicts with target machine type x64这是 32 位和 64 位打架最容易被忽略因为路径里往往没写位数第三种是 MinGW 编出来的 DLL 被 MSVC 工程加载编译能过运行期一调函数就崩因为调用约定对不上。前两种在链接期就能发现第三种要到运行期才炸排查成本最高所以宁可在第一步就把位数钉死。我一般会先做一件事把要用的 Qt 版本、编译器版本、目标架构写在一张纸上后面每一个下载、每一条命令都对着这张纸核。听起来笨但比在链接错误里游泳快得多。具体到版本上Qt 5 系列和 Qt 6 系列在 VLC-Qt 的兼容性上有差别较新的分支对 Qt 6 的支持更完整如果你手上的项目还没被绑死在 Qt 5 上优先选 Qt 6 能少踩一些QWidget相关头文件变动的坑。注意不要试图用 32 位的 libVLC SDK 去配 64 位的 Qt反过来也不行。链接期可能因为只用到少量符号而侥幸通过运行期加载libvlc.dll时会直接失败而且错误码毫无提示性。2.2 libVLC SDK 压缩包里要留的四个目录libVLC 的 Windows 发行包通常是一个免安装压缩包解压后根目录有vlc.exe、libvlc.dll、libvlccore.dll还有一个sdk子目录。很多人只盯着sdk把根目录的 DLL 丢了结果编译过了跑不起来。正确做法是把整个包留着编译用一个目录运行用另一个目录。sdk下的结构大致是这样sdk/include放头文件sdk/include/vlc下是libvlc.h、libvlc_media.h、libvlc_media_player.h这一批sdk/lib放导入库主要是libvlc.lib有些版本还会带libvlccore.lib。VLC-Qt 的 CMake 脚本一般只需要libvlc.lib就能完成链接libvlccore.lib是否被引用取决于具体分支配置前扫一眼cmake目录下的查找脚本最稳妥。目录 / 文件编译期用途运行期用途是否必须sdk/include头文件搜索路径无必须sdk/lib/libvlc.lib链接导入库无必须根目录libvlc.dll无加载入口必须根目录libvlccore.dll无libvlc 的内部依赖必须根目录plugins无解码器、输出模块必须这里有个容易被忽略的细节plugins目录体量很大包含几百个动态库音频输出、视频输出、解封装格式全靠它。你编译阶段完全用不到它但如果发布时不带程序能启动、能加载媒体画面就是不出来连报错都没有。关于plugins的组织方式我后面在避坑章节会展开。2.3 把 Ninja 与 MSVC 环境变量一次性配好生成器我倾向用 Ninja原因有两个一是单配置生成器对CMAKE_BUILD_TYPE的处理更直白不会有我在 VS 里设了 Debug 结果编出来还是 Release这种事二是增量编译快改一行头文件重编一整棵树的体验差别很明显。代价是需要先手动初始化 MSVC 的环境变量否则cl.exe根本不在 PATH 里。初始化脚本是编译器自带的vcvars64.bat64 位目标。用它开一个干净的命令行窗口后面所有命令都在这个窗口里跑# 在任意位置打开一个新的命令行窗口先执行环境初始化 call C:\编译器安装路径\VC\Auxiliary\Build\vcvars64.bat # 三项自检任何一个不通都别往下走 cl 21 | findstr /C:Version cmake --version ninja --version第一行call的作用是把cl.exe、link.exe、Windows SDK 的路径全部注入当前会话vcvars64.bat里的64决定了目标架构是 x64要编 32 位就换成不带 64 的那个脚本。第二步的三条自检命令分别确认编译器、CMake、Ninja 可用findstr那一步是为了确认cl真的被找到了而不是报不是内部或外部命令。如果ninja报找不到把它所在目录加进 PATH或者直接在 CMake 配置时用-DCMAKE_MAKE_PROGRAM指定完整路径。这套环境有个坑vcvars64.bat只影响当前命令行会话关掉窗口就失效。用 IDE 里的人往往意识不到自己继承了 IDE 注入的环境切到独立窗口手敲命令就各种找不到这属于典型的环境不一致翻车。我习惯是把这三条自检和后面的构建命令写进一个.bat文件每次从零开始跑保证结果可复现。3. 从空目录到 VLCQtCore.dll一套可复现的 CMake 命令链环境对齐之后真正的编译过程其实很短配置一次、构建一次、安装一次。但每一步的路径写法都有讲究写错了 CMake 不会告诉你你路径写错了它会告诉你找不到 LibVLC然后你再去猜是路径问题还是脚本问题。3.1 源码目录、构建目录、安装目录的分层VLC-Qt 较新的分支已经改用 CMake 构建老分支还是 qmake 的.pro两者差异很大。如果你拿到的源码根目录下同时有CMakeLists.txt和一堆.pro以CMakeLists.txt为准.pro多半是历史遗留。确认之后按源码、构建、安装三分的方式组织不要让构建产物污染源码树# 目录规划路径按自己的实际位置替换 D:/work/vlcqt/src # 源码只读不往里写任何生成物 D:/work/vlcqt/build # 构建目录可以整个删掉重来 D:/work/vlcqt/install # 安装目录最终给业务工程引用的就是这里 D:/sdk/vlc # libVLC SDK 解压位置编译只用 sdk 子目录把构建目录做成可删的是这套流程能反复重来的前提。CMake 会在构建目录里生成一堆缓存文件一旦你改了编译器或者 Qt 路径旧缓存会顽固地保留上一次的值表现出来就是我明明改了参数怎么还是报同样的错。遇到解释不了的现象删掉build目录重新配置比对着CMakeCache.txt一行行找快。安装目录的用途要说清楚install之后你会得到一个干净的头文件目录加库目录业务工程只需要INCLUDEPATH指向它的includeLIBS指向它的lib不需要知道源码在哪。这也是我建议编译源码而不是直接用预编译包的核心原因——你自己掌控安装布局出了问题能对照源码。3.2 一次配置命令与它每个参数的落点配置命令是整个流程里信息密度最高的一步。下面这条是我常用的形态用 Ninja 生成器、Release 类型、显式指定 Qt 和 libVLC 的位置cd /d D:/work/vlcqt cmake -S src -B build -G Ninja ^ -DCMAKE_BUILD_TYPERelease ^ -DCMAKE_PREFIX_PATHC:/Qt/版本/msvc2019_64 ^ -DCMAKE_INSTALL_PREFIXD:/work/vlcqt/install ^ -DLIBVLC_INCLUDE_DIRD:/sdk/vlc/sdk/include ^ -DLIBVLC_LIBRARYD:/sdk/vlc/sdk/lib/libvlc.lib逐项解释。-S和-B是源码目录和构建目录用相对路径时注意当前工作目录我一般先cd到工程根再写相对路径避免在别的目录里误建。-G Ninja指定生成器想用别的话换成对应名字但换生成器就必须删构建目录重来缓存不通用。-DCMAKE_BUILD_TYPERelease只在单配置生成器下有效这点在下一章会细说。-DCMAKE_PREFIX_PATH是给find_package(Qt...)用的指向 Qt 的安装根目录不是bin也不是lib多一层少一层都找不到。后两个参数是 libVLC 的落点。变量名不是全国统一的不同分支的查找脚本可能写成LIBVLC_INCLUDE_DIR、LIBVLC_INCLUDE_DIRS、LIBVLC_ROOT几种形态。判断方法打开源码里cmake目录下的FindLibVLC.cmake之类文件搜set(和find_path关键字看它读的是哪个变量照着喂。这一步花两分钟能省掉半小时的为什么提示找不到 libvlc。配置成功的标志是最后打印出Generating done并且摘要里 Qt 的版本号、编译器路径都是你预期的。如果摘要里 Qt 版本是空的说明CMAKE_PREFIX_PATH没指对如果编译器路径指向了别的盘符说明你跑命令的窗口没初始化环境。这两种情况都别急着往下构建先修配置。3.3 编译、安装与产物清点配置通过之后构建和安装各一条命令# 构建并直接安装到 CMAKE_INSTALL_PREFIX cmake --build build --config Release --target install -j 8--target install是让 CMake 在编完之后自动跑安装规则把 DLL、LIB、头文件拷到安装目录。-j 8是并行度按 CPU 核数调libVLC 的头文件不算多VLC-Qt 本身代码量也不大八线程通常几分钟内结束。如果你的生成器是多配置类型比如那些带--config语义的--config Release才有意义Ninja 单配置下这个参数会被忽略靠的是配置阶段的CMAKE_BUILD_TYPE。编完之后去安装目录清点产物正常情况下应该看到这些产物位置用途VLCQtCore.dllinstall/bin核心封装播放器、媒体、实例VLCQtCore.libinstall/lib链接用导入库VLCQtWidgets.dllinstall/bin视频窗口控件VLCQtWidgets.libinstall/lib链接用导入库VLCQtCore/*.hinstall/include头文件按模块分子目录清点时重点看两件事。一是 DLL 和 LIB 是不是成对出现只有 DLL 没有 LIB 说明导出符号没生成通常是编译选项问题二是头文件目录层级对不对业务工程里写#include VLCQtCore/Instance.h能不能命中取决于include下有没有VLCQtCore这一层。有些分支安装时会把头文件平铺那就得改引用写法别硬套。验证 DLL 里到底导出了什么可以用dumpbin# 看导出符号确认 VlcInstance、VlcMediaPlayer 这些类的方法在不在 dumpbin /exports build/bin/VLCQtCore.dll | findstr /C:VlcInstance这条命令的作用是绕过编译期直接检查二进制。如果dumpbin里没有你要用的符号那问题出在编译阶段改业务代码是没用的。养成编完就 dump 一次的习惯能把编译成功但用不了这类问题提前暴露。4. 编译目标拆解VLCQtCore、VLCQtWidgets 与 Qml 模块要不要全开很多人配置时把所有开关都打开编完发现多出一堆用不上的 DLL发布包体积翻倍还多几个要跟着拷的依赖。VLC-Qt 是按模块拆的搞清楚每个模块管什么才知道该编哪些。4.1 三个子模块各自的职责与依赖VLCQtCore是地基封装了VlcInstance、VlcMedia、VlcMediaPlayer、VlcCommon这一层直接对着libvlc的 C 接口做薄封装把事件回调转成 Qt 信号。它依赖 QtCore 和 libvlc不依赖任何界面类。业务里如果你只要后台解码、抽帧、取时长不要窗口那么这个模块单独就够了。VLCQtWidgets建立在前者之上提供VlcWidgetVideo这类 QWidget 控件依赖 QtWidgets 和 QtGui。它做的事情是把libvlc的窗口句柄接到一个原生窗口上实现嵌进布局里的效果。绝大多数桌面播放器场景用的是这一层。VLCQtQml是给 Qt Quick 用的把播放器包装成 QML 可用的类型依赖 QtQml 和 QtQuick。如果你的界面是 QWidget 写的这个模块编出来纯属浪费。开不开取决于业务用哪套 UI 框架两者可以共存但没必要。模块依赖典型场景是否默认编VLCQtCoreQtCore libvlc后台解码、抽帧、音频分析建议编VLCQtWidgetsCore QtWidgets桌面端带视频窗口的应用按需VLCQtQmlCore QtQml/QuickQML 界面嵌入播放按需模块开关在 CMake 里通常是option()定义的名字可能是BUILD_WIDGETS、WITH_QML之类配置前用cmake -L把可配置项列出来或者直接读根CMakeLists.txt顶部的 option 段比猜靠谱。关掉不需要的模块能显著减少链接时间和发布体积尤其是 Qml 模块会拖进 QtQuick 的一大串依赖。4.2 动态库还是静态库Windows 上的取舍VLC-Qt 的 CMake 一般支持用BUILD_SHARED_LIBS控制产出动态库还是静态库。这个选择在 Windows 上比在 Linux 上敏感得多核心是运行时库CRT的匹配问题。动态库方案是默认也是省心的VLC-Qt 编成 DLL业务工程链接导入库运行时把几个 DLL 拷到 exe 旁边。好处是升级方便替换 DLL 即可坏处是要管依赖漏拷一个就起不来。静态库方案能把 VLC-Qt 直接链进 exe少几个文件但要求两边用同一套 CRT/MD对/MD/MT对/MT一旦不一致链接期会报LNK2005: 已经在 xxx.obj 中定义或者更隐蔽的堆操作崩溃。我的建议是除非你有明确的单文件发布需求否则走动态库。静态库在 Windows 上省下的那几个文件换来的是排查 CRT 冲突的时间成本不划算。真要静态就在配置时显式指定-DCMAKE_MSVC_RUNTIME_LIBRARYMultiThreadedDLL之类把两边钉在同一套 CRT 上别依赖默认值。4.3 Debug 与 Release 双份产物的组织方式调试期你会需要 Debug 版的 DLL因为 Release 版在断点里看不到变量栈回溯也残缺。两种配置产出的文件名如果一样装到同一个bin目录下就会互相覆盖今天编 Debug 明天编 Release业务工程永远不知道拿到的是哪个。处理办法是给 Debug 产物加后缀CMake 有现成变量# Debug 版 DLL 加 d 后缀VLCQtCore.dll 变成 VLCQtCored.dll cmake -S src -B build-debug -G Ninja ^ -DCMAKE_BUILD_TYPEDebug ^ -DCMAKE_DEBUG_POSTFIXd ^ -DCMAKE_PREFIX_PATHC:/Qt/版本/msvc2019_64 ^ -DCMAKE_INSTALL_PREFIXD:/work/vlcqt/install-debug ^ -DLIBVLC_INCLUDE_DIRD:/sdk/vlc/sdk/include ^ -DLIBVLC_LIBRARYD:/sdk/vlc/sdk/lib/libvlc.lib这里用两个独立的构建目录和两个独立的安装目录配合CMAKE_DEBUG_POSTFIXDebug 和 Release 的产物可以同时存在、互不干扰。业务工程在.pro或CMakeLists里按配置切换引用路径即可。要注意 libvlc 本身通常只提供 Release 版导入库用它链 Debug 版一般没问题因为 C 接口的 ABI 在两种配置下一致。但 VLC-Qt 自己的 C 类如果跨配置混用业务工程 Debug 却链接 Release 版 VLCQtCore标准库容器布局可能不一致表现为一传QString就崩。这类问题没有报错只有崩溃靠CMAKE_DEBUG_POSTFIX从命名上区分是唯一可靠的防线。5. 避坑链接错误、启动即退与播放黑屏的排查顺序下面这几条都是我在实际项目里撞过的按现象 → 原因 → 解决写顺序大致对应从编译期到运行期。5.1 现象链接报 LNK1112 模块计算机类型冲突配置阶段一切正常构建到链接某一步突然报机器类型冲突。原因基本只有一个libVLC SDK 的位数和 Qt 的位数不一致。32 位的libvlc.lib被 64 位目标引用链接器立刻拒绝这个错还算友好至少报出来了。解决办法是统一位数。先确认 Qt 的位数qmake -query QT_INSTALL_PREFIX出来的路径里通常带msvc2019_64或msvc2019带 64 就是 64 位再用dumpbin /headers D:/sdk/vlc/sdk/lib/libvlc.lib | findstr machine看 SDK 那边是x86还是x64。两边不一致就换 SDK 包别试图用/MACHINE之类的链接器参数强行绕绕过去也是运行期炸。5.2 现象程序启动立刻退出事件查看器里没有任何有用信息双击 exe 闪一下就没了调试器里能看到加载VLCQtCore.dll失败。原因通常是依赖链断了VLCQtCore.dll依赖libvlc.dlllibvlc.dll又依赖libvlccore.dll任何一环找不到都会导致加载失败而 Windows 的默认错误提示只有一句找不到指定的模块不告诉你是哪个。排查顺序是先用依赖查看工具把VLCQtCore.dll的依赖树拉出来看红色标记在哪一层。解决上把libvlc.dll、libvlccore.dll拷到 exe 同目录或者把 libVLC 根目录加进 PATH。我倾向拷文件而不是改 PATH因为发布时 PATH 是不可控的拷文件的行为在开发机和用户机上一致。5.3 现象窗口出来了媒体也加载了就是黑屏没声音这个最有迷惑性因为所有 API 调用都返回成功。原因基本锁定在plugins目录libvlc的解封装、解码、视频输出、音频输出全部以插件形式加载插件目录找不到它就静默降级什么都不做。解决分两步。第一步把 libVLC 根目录下的plugins整个文件夹拷到 exe 同级目录注意是整个文件夹不是里面的文件。第二步在代码里显式指定插件路径不要依赖默认搜索// 在创建 VlcInstance 之前设置插件路径避免依赖工作目录 #include VLCQtCore/Common.h int main(int argc, char *argv[]) { QApplication app(argc, argv); // 指向 exe 同级的 plugins 目录路径用绝对路径最稳 VlcCommon::setPluginPath(QCoreApplication::applicationDirPath() /plugins); // 设置日志级别出问题时能看到 libvlc 内部到底报了什么 VlcCommon::setLogLevel(Vlc::Debug); // ... }setPluginPath的作用是告诉 libvlc 去哪里找插件传绝对路径可以避免从 IDE 启动时工作目录是 build 目录这种环境差异。setLogLevel那一行平时可以关掉排查黑屏问题时打开控制台会打印出具体哪个插件加载失败比盲猜快得多。提示plugins目录有几百个文件、体积不小打包时如果只挑几个 DLL 拷很可能挑漏。整目录拷是唯一稳妥的做法实在嫌大可以事后按日志里实际加载的插件做裁剪但那是优化阶段的事。5.4 现象CMake 配置阶段报找不到 Qt 或找不到 LibVLCCould not find a package configuration file provided by Qt5这种错九成是CMAKE_PREFIX_PATH指错了层级。它要的是 Qt 的安装根目录也就是bin、lib、include的上一级不是lib/cmake。另一种情况是你指对了根目录但 CMake 缓存里还留着上一次的错误值改参数不生效这时候删构建目录重配是唯一解。找不到 LibVLC 的情况更杂。先确认你喂的变量名和查找脚本读的一致这一步前面说过再确认路径里没有中文字符和空格CMake 对这两样在 Windows 上的处理时好时坏路径带空格时字符串没加引号就会被截断。我一般把源码、SDK、构建目录全放在纯英文无空格的短路径下能规避一大类玄学问题。6. 用三十行代码验收编译产物最小播放器与几个收尾技巧编完了不算完得有个能跑起来的最小验证。下面这段只做一件事加载一个本地视频文件显示窗口播起来。所有复杂逻辑都砍掉目的是把编译链路和运行链路一次性验通。#include QApplication #include VLCQtCore/Common.h #include VLCQtCore/Instance.h #include VLCQtCore/Media.h #include VLCQtCore/MediaPlayer.h #include VLCQtWidgets/WidgetVideo.h int main(int argc, char *argv[]) { QApplication app(argc, argv); // 插件路径必须在 Instance 创建前设置 VlcCommon::setPluginPath(QCoreApplication::applicationDirPath() /plugins); // 单例实例参数可传 --no-video-title-show 之类关掉默认水印 VlcInstance instance(QStringList() --no-video-title-show); // 媒体对象只描述资源不负责播放 VlcMedia media(QUrl::fromLocalFile(D:/test/sample.mp4), instance); VlcMediaPlayer player(instance); player.setMedia(media); // 绑定媒体 player.play(); // 异步开始播放 // 控件负责把 libvlc 的渲染窗口挂到 QWidget 上 VlcWidgetVideo videoWidget(player); videoWidget.resize(960, 540); videoWidget.show(); return app.exec(); }这段代码的关键点在两个顺序上。setPluginPath必须在VlcInstance构造之前调用因为实例创建时就会初始化 libvlc 并扫描插件目录晚一步就没用了。VlcWidgetVideo要在play()之后创建并 show某些版本在播放前挂窗口会拿不到正确的句柄表现是窗口一片黑但音频正常。这两处都被我踩过写在这里省你一次调试。业务工程引用编译产物.pro里大致这么写# 指向 install 目录Debug 配置下切到 install-debug 并把库名加 d VLCQT_DIR D:/work/vlcqt/install INCLUDEPATH $$VLCQT_DIR/include LIBS -L$$VLCQT_DIR/lib -lVLCQtCore -lVLCQtWidgets # 使用动态库时业务工程侧通常需要定义模块导出宏 DEFINES VLCQT_CORE_LIBRARY VLCQT_WIDGETS_LIBRARYDEFINES那一行的作用是让头文件里的导出宏展开成dllimport而不是dllexport不定义的话 MSVC 可能报无法解析的外部符号因为符号修饰方向反了。具体宏名以你编出来的头文件里#ifdef的判断为准扫一眼VLCQtCore/Common.h顶部就能确认别照抄。最后说一个我自己的习惯每次编译完我会把 install 目录、SDK 版本、Qt 版本、编译器版本记在一个build-info.txt里和产物一起归档。半年后要重编或者换机器照着这个文件复现比回忆当时用的是哪个包可靠得多。Windows 上这套依赖的版本敏感性太高靠记忆是靠不住的玄学问题往往就是某个不起眼的版本差异。希望帮到你。本文还有配套的精品资源点击获取
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/31 2:51:05
车站售票管理系统数据库课设:事务边界与并发防超卖
2026/10/31 2:51:05
网络安全纵深防御体系构建与实践指南
2026/10/31 2:46:05
智能摄像头在智能车道路视频采集中的关键技术解析
2026/10/31 4:11:10
Jev瘦接口设计:Choice、Score与概率如何重塑AI工作流
2026/10/31 4:11:10
Jev模型决策层设计:从AI Agent到本地部署的架构实践
2026/10/31 4:11:10
微信小程序Canvas层级问题解决方案与优化实践
2026/10/31 4:11:10
前馈+反馈协同控制:LKA方向盘抖动问题的工程解法
2026/10/31 4:11:10
Vue+iframe微前端架构在企业级流程引擎中的实践
2026/10/31 4:06:10
C语言哈夫曼文件压缩:频率统计、位缓冲与解压终止避坑
2026/10/31 0:00:18
猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包
2026/10/31 0:00:18
HDU2017多校标程复现:算法竞赛工程化真题沙盒
2026/10/31 0:00:18
Codex Sandbox 隔离环境拆解:AI Agent 的临时实验室如何运作
2026/10/31 0:57:03
全国计算机二级C语言真题PDF高效刷题指南
2026/10/31 0:56:56
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/30 21:48:31
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)