Qt跨平台打包部署实战:从依赖原理到工具排错全指南
前阵子帮一个朋友把他做的Qt小工具部署到客户机器上程序本身不复杂一个表格加几个按钮结果折腾了大半个下午这台机器缺dll那台机器启动闪退还有一台死活连不上数据库。Qt项目打包这件事开发环境里永远看不出问题因为你本机装了完整Qt库、编译器运行库程序怎么跑都顺一旦部署到干净机器上各种依赖问题就全冒出来了。这篇文章就把我在Windows、macOS、Linux三个平台上做Qt项目打包的完整思路过一遍从依赖原理讲到工具实操再补一批排错经验希望能给正准备搞定部署的同学一条能直接照着走的路。1. 先搞清楚Qt程序为什么不能直接“拷贝即运行”1.1 开发机能跑换台机器就废问题出在哪用C/C写出来的Qt程序运行时必须加载一组动态库。Windows上是dllLinux上是somacOS上是dylib。Qt程序尤其典型你看着自己写的那点业务代码没多少真正跑起来要依赖QtCore、QtGui、QtWidgets这类重量级库还要加载平台插件、图片格式插件、样式插件、数据库驱动插件。开发机装了完整的Qt SDK这些东西应有尽有所以程序启动一路绿灯目标机器如果没有Qt环境程序在解析导入符号的阶段就直接失败表现就是“缺少xxx.dll无法继续执行”。这里我习惯用一个类比来解释开发机相当于一间工具齐全的工作间各种扳手、螺丝刀、电烙铁都摆在手边你干活自然顺手。部署目标机器是一间空屋子你要么把所有用得到的工具都带着一起搬过去带上动态库要么提前把工具精简进一个小工具箱里静态编译静态链接。动态库方案灵活、改动小、符合Qt官方推荐路径绝大多数情况下我们都选它。这也是为什么“把exe直接拷过去就能跑”这个想法本身没问题条件是那台机器上恰好有对应的Qt库和编译器运行库。至于到底依赖了哪些库你不必自己一个个去数windeployqt这类工具会替你分析但理解原理能帮你判断“工具什么时候靠得住什么时候必须自己动手补”。1.2 插件目录最容易被漏掉的“隐藏依赖”很多人第一次打包把exe和相关dll都带齐了结果一到目标机器上双击程序没反应或者屏幕闪一下就没了。这多半不是dll缺失而是Qt插件没带上。Qt通过插件机制实现跨平台同一个框架在不同系统上都有一层“平台集成层”Windows上窗口最终要通过platforms/qwindows.dll和系统窗口管理器打交道macOS上是platforms/libqcocoa.dylibLinux的X11环境下是platforms/libqxcb.so。如果这个目录不存在程序可能已经走到了QApplication构造附近但在创建第一个窗口时静默失败。验证这个猜想有个非常实用的临时手段设置环境变量QT_DEBUG_PLUGINS1再从前台运行程序控制台会打印出完整的插件加载日志哪一步失败一目了然。Windows下在命令行窗口里执行set QT_DEBUG_PLUGINS1 MyApp.exe同样的插件机制还作用于图片格式、样式、数据库驱动、TLS后端等常见的几类插件路径和缺失表现如下插件目录典型作用缺失表现platforms平台窗口集成启动即退出或无响应imageformats解析png/jpg/gif/tiff等部分图片格式能读、部分读不了styles界面样式Fusion等界面样式丢失或插件加载失败sqldriversSQLite/MySQL等数据库驱动连接数据库时报driver not loadedtlsQt网络模块的SSL后端HTTPS请求失败提示不支持SSL部署时我会建议把整个插件目录随包带出去别自作聪明只拷几个文件。原因很简单你无法预知程序在用户的机器上会不会走到某个需要特定插件的分支一旦走了运行期加载失败比编译期发现麻烦得多。2. 三条部署路线记录windeployqt、macdeployqt与AppImage2.1 Windows平台windeployqt的实操流程与编译器套件对应关系Windows是Qt桌面程序最常见的部署平台官方给的工具是windeployqt.exe位于Qt安装目录的对应套件bin目录下。我的操作流程固定是三步第一步编译release版本。这一步反复强调也不为过不要拿debug包去部署。debug版本依赖多个调试用途的Qt库体积大目标机器通常也没有对应的调试运行环境即使能跑起来性能也难看。第二步新建一个干净的部署目录。我习惯在工程目录下建一个deploy文件夹把编译产物里唯一的exe复制进去其他杂七杂八的中间文件一律不带。第三步调用windeployqt自动分析依赖并拷贝。常用命令长这样D:\Qt\6.5.0\msvc2019_64\bin\windeployqt.exe --release --no-translations --no-system-d3d-compiler --no-opengl-sw --no-angle D:\deploy\MyApp.exe几个参数各有用处--release按release模式分析--no-translations跳过语言翻译文件程序不做多语言的话这一项能省下几MB--no-system-d3d-compiler、--no-opengl-sw、--no-angle都是限制Direct3D/OpenGL软件渲染相关文件的拷贝纯Qt Widgets程序基本用不到这些不写也行但加上会让部署目录更清爽。跑完后deploy目录下会有一批Qt相关dll以及platforms、styles、imageformats等插件目录。典型的目录结构是deploy/ ├── MyApp.exe ├── Qt6Core.dll ├── Qt6Gui.dll ├── Qt6Widgets.dll ├── ... ├── platforms/ │ └── qwindows.dll ├── imageformats/ │ ├── qjpeg.dll │ └── qpng.dll └── styles/ └── qmodernwindowsstyle.dll最重要的一条经验windeployqt必须和构建时使用的编译器套件对应。MSVC版的工具用在MinGW构建的程序上会尝试拷贝MSVC运行库到部署目录而程序实际需要的是libgcc_s_seh-1.dll、libstdc-6.dll、libwinpthread-1.dll这些MinGW运行时最终导致部署包里填了一堆错误依赖真正该带的没带。MinGW构建的额外注意点是确认这几个运行时库是否被工具带出来了有时需要手动从MinGW的bin目录复制。MSVC构建则要关注VC运行库的分发要么在目标机器装对应版本的VC_redist.exe要么用/MT静态链接运行时后者部署体验更干净。2.2 macOS平台macdeployqt、代码签名和dmg制作macOS的打包对象是.app bundle官方工具是macdeployqt通常位于Qt安装路径下对应编译器的bin目录。一条基本命令/Users/xxx/Qt/6.5.0/clang_64/bin/macdeployqt /path/to/MyApp.app执行后工具会把Qt框架拷贝进MyApp.app/Contents/Frameworks目录同时改写可执行文件里的install name让程序加载包内自带的Qt框架而不是系统的。做完这一步这个.app就相当完整了拷到其他macOS机器上在架构一致的情况下基本可以直接运行。分发时经常遇到“已损坏无法打开”或“无法验证开发者”之类的提示这通常不是包坏了而是Gatekeeper的隔离属性在作祟。解决方案要么用xattr -dr com.apple.quarantine /path/to/MyApp.app去除隔离标记适合内部分发要么做正常的Developer ID签名codesign --deep --force --verify --verbose --sign Developer ID Application: YourName /path/to/MyApp.app制作安装包通常走dmg路线hdiutil一条命令就能把整个.app目录压成一个只读镜像hdiutil create -volname MyApp -srcfolder MyApp.app -ov -format UDZO MyApp.dmgmacOS部署里比Windows更麻烦的是第三方动态库。如果你的程序依赖FFmpeg这类通过Homebrew安装的库直接拷贝dylib过去往往会在运行时报错因为这些动态库的install name里写着Homebrew的绝对路径。需要用install_name_tool -change把路径改写成rpath或相对于可执行文件的路径这一步比较繁琐通常放在自动化脚本里处理。另外Intel架构编译的app在Apple Silicon机器上能跑是靠Rosetta转译反向通常不行架构选型在打包前就要想清楚。2.3 Linux平台的AppImage打包路线Linux之所以难搞根源在于“目标机器的系统库版本可能比你编译机更低”。Qt自身依赖的系统库比如glibc版本过高在老旧发行版上就会报“version GLIBC_XX not found”之类的错误。官方并没有像Windows和macOS那样提供一劳永逸的deploy工具社区最常见的解决方案是AppImage。基本流程是先准备一个AppDir目录结构把可执行文件、desktop文件、图标都放进去再用linuxdeploy或linuxdeployqt把依赖的Qt库抽进去最后打成单个AppImage文件。示例流程wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod x linuxdeploy-*.AppImage export APPIMAGE_EXTRACT_AND_RUN1 mkdir -p AppDir/usr/bin cp MyApp AppDir/usr/bin/ cp myapp.desktop AppDir/usr/share/applications/ cp icon.png AppDir/usr/share/icons/hicolor/256x256/apps/ ./linuxdeploy-x86_64.AppImage --appdir AppDir --output appimageAPPIMAGE_EXTRACT_AND_RUN1的作用是在某些无法直接挂载AppImage的环境下强制解包运行。如果程序依赖Qtlinuxdeploy配合qt插件可以自动把Qt相关库带进去也可以选择手动拷贝Qt库目录并用LD_LIBRARY_PATH指定运行路径。Linux部署还有一条老经验尽量在目标用户群中使用的最低版本发行版上编译。比如你的用户大多还在Ubuntu 18.04那就在18.04的容器里出包这样依赖的glibc版本不会太高拿到新系统上也能跑。跨发行版兼容没有银弹容器编译是目前性价比最高的方案。3. 部署后程序起不来的完整排查链路从“缺dll”到“闪退”3.1 三个真实的失败现场先说几个我实际遇到过的现象方便你对号入座Windows上最常见的是弹窗提示“由于找不到xxx.dll无法继续执行代码”点击确定后程序退出。这种问题通常最直接缺什么补什么就行难的是搞明白“为什么同一个dll在这个机器上找得到在那个机器上找不到”。Linux下如果通过终端启动往往是一行error while loading shared libraries: libQt6Widgets.so.6: cannot open shared object file问题定位起来比Windows更直观。macOS上则是双击图标后毫无反应终端看崩溃日志才发现异常或者干脆弹“打不开因为它来自身份不明的开发者”。这三个现象对应的解决路径完全不同缺dll是二进制依赖缺失插件加载失败是目录结构不对macOS的“无法打开”则可能是签名或隔离属性问题。所以排查的第一步永远是先看现象别急着改代码。3.2 一条命令一个工具Dependencies、ldd与otool的配合用法Windows上的硬核排查工具我首推开源的DependenciesGUI它能解析exe和所有dll的导入表显示完整的依赖树还能指出哪个dll是缺失状态。另一个方案是Process Explorer或火绒剑程序跑起来后实时查看进程加载的全部模块列表尤其适合查“程序能启动但功能异常疑似缺少运行期动态加载的dll”的情况。Linux最简化的做法是lddldd ./MyApp输出结果里如果出现not found缺失项一目了然。不过ldd只能看到“当前系统环境下的解析结果”更严谨的确认方式是检查程序的RPATH和LD_LIBRARY_PATH设置有时库文件明明在却因为路径配置不对压根没被搜到。macOS上先用otool -L MyApp查看可执行文件的动态库依赖确认具体的库路径再配合lsof查看运行中的进程实际打开了哪些动态库。我举一个真实案例某工具部署到Windows后启动即崩用Dependencies查看发现exe同目录下有一个Qt6Widgets.dll但Dependencies显示exe实际加载的是系统PATH某个目录下的另一版本Qt库混包导致符号错乱。这类问题的根因多半是部署目录里同时混入了Qt 5和Qt 6的库或者同名的dll从不同版本目录里各拷贝了一份。windeployqt只是“分析并补齐依赖”并不会清理目录里已有的错误文件所以“部署目录必须从零开始”这条纪律非常重要。3.3 几个我反复踩过的高频坑给个清单每一行都是我或者身边同事真真切切碰到过的平台插件路径问题没带platforms/qwindows.dll报错往往不是“缺少qwindows.dll”而是“could not find or load the Qt platform plugin”。方案很简单确保目录结构正确别把插件目录放到子目录套娃。MinGW和MSVC混用MinGW构建的程序手动拷入MSVC版本的dll表面看文件在一运行就崩。务必保证整套Qt库来自同一个编译器套件。Qt5与Qt6的库混放两者虽然都叫QtCore但二进制接口不兼容。一次run windeployqt之后如果目录里残留旧版本库文件排查起来极其折磨。数据库驱动配套程序用了Qt SQL连MySQL只拷了sqldrivers/qsqlmysql.dll还不够MySQL客户端库libmysql.dll也要一起带上否则驱动加载不了。OpenSSL版本不匹配Qt网络模块访问HTTPS时如果缺少OpenSSL的动态库会在运行期打印QSslSocket::connectToHostEncrypted called before QSslSocket::supportsSsl()。Qt 5.15系列一般配套OpenSSL 1.1.xQt 6.2之后可以配套OpenSSL 1.1.1或3.x版本不对也加载失败。中文路径在某些Windows机器上exe路径或部署目录含中文会导致Qt插件搜索异常报错却莫名其妙。国际分发时我一般强制使用英文字母目录。安全软件误删一部分插件和dll会被杀毒软件当成注入型工具隔离导致部署包在部分机器上“随机失败”这属于环境因素通常需要在软件发布渠道的白名单上沟通。4. 让交付包更专业瘦身、版本信息与一键打包4.1 体积瘦身从“几十MB”到“还能再小”Qt程序的部署体积确实讨人嫌一个Qt6Core.dll动辄十几MB加上Widgets、Gui等全家桶随便一包就上百MB。有效的减法按顺序做第一确认是release构建。一个release版Qt Widgets程序用windeployqt打包体积一般在50~80MB级别debug版翻倍还不止。第二跳过翻译文件。--no-translations参数一加Qt自带的qt_zh_CN.qm、qtbase_zh_CN.qm等语言包就不会混进部署目录程序界面语言不涉及Qt内置控件多语言时完全不亏。第三精简插件目录。真正需要保留的通常只有platforms、imageformats、stylessqldrivers里没用的驱动、tls里用不到的后端都可以删掉。每删一个插件文件就是实打实省下几百KB甚至几MB。第四对可执行文件做strip。Linux和macOS上直接执行strip MyApp即可去除符号表Windows的MSVC链接器默认已经在很大程度上剥离了符号信息没必要额外操作。第五谨慎使用UPX压缩。upx --best MyApp.exe可以把体积再压一截但压缩后的可执行文件在某些杀毒软件里“行为可疑”容易误报。商业分发时我一般不碰UPX宁可包大一点也不想被误杀。一个Qt Widgets程序经过release构建、去除翻译、精简插件后从默认的50~80MB压到30MB左右是常见的优化幅度再往下的空间就有限了。4.2 版本信息、图标与Windows资源文件交付给用户的软件右键exe属性里最好能显示产品名称、文件版本、公司名而不是一片空白。Windows下通过资源文件.rc实现在工程里加入这样一个app.rcIDI_ICON1 ICON DISCARDABLE app.ico VS_VERSION_INFO VERSIONINFO FILEVERSION 1,2,0,0 PRODUCTVERSION 1,2,0,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x40004L FILETYPE 0x1L BEGIN BLOCK StringFileInfo BEGIN BLOCK 080404b0 BEGIN VALUE CompanyName, 某公司 VALUE FileDescription, 某桌面工具 VALUE FileVersion, 1.2.0.0 VALUE ProductName, 某桌面工具 VALUE ProductVersion, 1.2.0.0 END END BLOCK VarFileInfo BEGIN VALUE Translation, 0x804, 1200 END ENDqmake工程里在pro文件加上一行RC_FILE app.rcCMake工程里更简单把.rc文件直接加进源文件列表即可。macOS的版本信息在Info.plist里维护Linux桌面软件的分发通常配合.desktop文件的Version字段不同平台各管各的没有统一入口。4.3 一键打包脚本把手工流程变成一条命令包装流程一旦固定下来立刻写脚本。人手动操作一定会漏步骤尤其是编译完急着交付的时候。Windows下我的bat脚本长这样echo off set QT_DIRD:\Qt\6.5.0\msvc2019_64 set SRC_DIRbuild\release set DEPLOY_DIRdeploy rmdir /s /q %DEPLOY_DIR% 2nul mkdir %DEPLOY_DIR% copy /y %SRC_DIR%\MyApp.exe %DEPLOY_DIR%\MyApp.exe %QT_DIR%\bin\windeployqt.exe --release --no-translations --no-system-d3d-compiler --no-opengl-sw --no-angle %DEPLOY_DIR%\MyApp.exe echo Deploy done.macOS对应的是macdeployqt加hdiutil的组合Linux则把AppImage构建流程写成shell脚本。更进一步打包脚本完全可以接进CI每次主分支构建成功后自动跑一遍产物归档。这样发布的永远是“最新源码对应的部署包”不会出现“开发机器上跑的是新版交付目录里还是旧版”的乌龙。我自己现在的习惯是开发完成后第一件事就是跑一次打包脚本然后拉一台干净虚拟机做冒烟测试确认启动、数据库连接、文件读写全都没问题这个包才算过审。Qt打包这件事说穿了就是把开发机上已经默认备齐的一切显式整理好塞进一个干净的文件夹里。工具会帮你做大部分事但你得知道它做到哪一步、哪些角落还要自己补。把原理想通、流程固化成脚本之后下次再遇到部署问题也就一句话的事。

相关新闻

反编译ctrip.rar:用javap与CFR提取机票订单业务骨架

反编译ctrip.rar:用javap与CFR提取机票订单业务骨架

简介:基于JSP实现的携程网仿制项目,面向Java Web初、中级学习者,通过复刻在线旅行平台的登录、搜索、预订等核心流程,还原从用户请求到后台处理再到结果展示的完整链路。压缩包共128个文件,约963KB,包含Jav…

2026/10/12 11:52:54 阅读更多 →
智慧营业厅3D可视化平台建设实践:从场景搭建到业务联动

智慧营业厅3D可视化平台建设实践:从场景搭建到业务联动

1. 从"排队叫号"到"一屏统管":运营商营业厅为什么要做3D可视化做运营商业务系统这些年,我越来越清楚地看到一件事:传统营业厅的业务办理模式已经走到了一个需要彻底重构的节点。客户进门取号、排队、填单、柜台办理&…

2026/10/12 11:52:54 阅读更多 →
括号匹配进阶指南:从有效性判断到最长有效括号子串

括号匹配进阶指南:从有效性判断到最长有效括号子串

刷过算法题的人,基本都绕不开这么一道经典题目:给定一个只包含左括号和右括号的字符串,判断括号是否有效,顺便看看最大嵌套深度有多深,再找一找最长有效括号子串的长度。一个标题把三个层次全占了,从基础的…

2026/10/12 11:52:54 阅读更多 →

最新新闻

低空经济产业链分化:军用材料与民用组装的配对交易策略

低空经济产业链分化:军用材料与民用组装的配对交易策略

1. 项目缘起:为什么我会盯上“低空经济”里的军用材料 低空经济是过去两年绕不开的话题:政策密集出台、各地争抢产业高地、eVTOL和无人机企业密集融资。但热闹归热闹,真正落到交易层面,你会发现这个赛道有个典型特征—— 板块内部…

2026/10/12 12:45:57 阅读更多 →
复试面试答辩利器:AI项目实战全流程指南

复试面试答辩利器:AI项目实战全流程指南

考研复试准备进入倒计时的这段时间,不少同学都在纠结同一个问题:复试到底要靠什么打动面试老师?我说得直接一点,一个你自己跑通、能讲清细节的 AI 项目 ,比背十页八股文都管用。它不是让你炫技,而是把你的…

2026/10/12 12:45:57 阅读更多 →
COMSOL电磁超声压电接收EMAT仿真:250kHz铝板多物理场建模解析

COMSOL电磁超声压电接收EMAT仿真:250kHz铝板多物理场建模解析

电磁超声换能器(EMAT)在无损检测里并不是一个新概念,但每次做仿真都会有人卡在同一个地方:模型搭好了,信号却出不来,或者波形乱成一团。原因很简单——EMAT本身就是多物理场耦合问题:磁场生涡流…

2026/10/12 12:45:57 阅读更多 →
考研复试AI项目实战:从选题到部署全流程指南

考研复试AI项目实战:从选题到部署全流程指南

考研复试的竞争一年比一年激烈,尤其是计算机、人工智能、软件工程这类专业。初试成绩出来后,大家都明白,复试才是真正决定导师愿不愿意要你的关键环节。初试比的是一张卷子上的分数,复试比的是你在导师面前展现出来的综合能力&…

2026/10/12 12:45:57 阅读更多 →
Flutter安卓打包发布全流程:签名配置与AAB/APK选择指南

Flutter安卓打包发布全流程:签名配置与AAB/APK选择指南

Flutter项目写到最后,真正决定能不能上线的,往往不是代码质量,而是打包发布这条链路顺不顺。我见过不少开发者功能都写好了,卡在生成安卓安装包这一两步:签名怎么配、AAB和APK到底该选哪个、为什么本地跑得好好的包装到…

2026/10/12 12:45:57 阅读更多 →
广州二手房价预测:Python回归模型实战与避坑指南

广州二手房价预测:Python回归模型实战与避坑指南

简介:一份广州市二手房价预测的数据与Python代码包,整体定位为典型的数据分析入门项目,适合正在学习回归建模、特征工程或希望了解房价影响因素的读者。资源为RAR压缩包,共19个文件,大小仅1.05MB,其中含17张…

2026/10/12 12:44:56 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →