Qt 5+ 官方提供 windeployqt 工具,可自動分析可執行文件依賴,將所需 Qt 庫、插件、QML 模塊、編譯器運行時複製到部署目錄。本文演示 Qt Widgets 專案從創建到一鍵部署的完整流程,並在 Qt Creator 中集成部署步驟,實現「構建即發布」。
Build → Build for Release。windeployqt.exe 在 PATH 中(通常在 Qt/版本/編譯器/bin)。cd build-Project-Desktop_Qt_5_15_2_MinGW_64_bit-Release/release windeployqt Project.exe
工具會掃描 Project.exe 導入表,遞歸複製:
Qt5Core.dll, Qt5Widgets.dll, Qt5Gui.dll...platforms/qwindows.dllimageformats/qjpeg.dll, qsvg.dll...libgcc_s_seh-1.dll, libstdc++-6.dll, libwinpthread-1.dll (MinGW) 或 vcruntime140.dll (MSVC)。在「項目」→「構建步驟」→「添加構建步驟」→「自定義處理步驟」:
| 字段 | 值 |
|---|---|
| 命令 | windeployqt |
| 參數 | %{buildDir}/%{CurrentBuild:Type}/%{CurrentProject:Name}.exe |
| 工作目錄 | %{buildDir} |
構建發布版後,部署目錄自動生成完整依賴樹,可直接打包分發。
release 目錄複製到無 Qt 環境的乾淨 Windows 虛擬機。Project.exe,界面正常顯示、功能正常運行。Dependency Walker 或 listdlls 確認無缺失 DLL。| 問題 | 原因 | 解決 |
|---|---|---|
| 啟動報「找不到 Qt5Core.dll」 | 未運行 windeployqt 或工作目錄錯誤 | 確保在 exe 同級目錄運行工具 |
| 圖片不顯示 / SVG 不渲染 | 缺少 imageformats/iconengines 插件 | windeployqt 自動處理,檢查 plugins 目錄 |
| 中文路徑亂碼 | MinGW 運行時路徑編碼問題 | 部署路徑避免中文,或用 MSVC |
| 體積過大 | 包含所有插件 | 手動刪除無用插件(如不需 SQL 刪除 sqldrivers) |
Qt Widgets 部署核心三步:
將 windeployqt 集成進 Qt Creator 構建流程,實現「一次配置,構建即發布」,極大提升交付效率。下一篇將講解 Qt Quick 應用部署的特殊坑點(QML 模塊依賴、編譯器運行時等)。