使用 CMake 搭配 MinGW 編譯的程式,在開發機上能正常執行,但複製到其他電腦時出現「應用程式無法正常啟動 0xc000007b」,最常見的原因是缺少 Min 執行階段函式庫(Runtime Libraries)。
可能原因
- 目標電腦未安裝對應的 MinGW DLL,例如 libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll。
- 編譯時使用動態連結執行階段,但未隨程式一併提供相依 DLL。
- 32 位元與 64 位元環境混用,導致 DLL 不相容。
解決方案
- 隨程式附帶 DLL:將編譯器目錄下所需的 MinGW DLL 複製到執行檔同一資料夾。
- 靜態連結執行階段:在 CMake 或編譯選項中加入 -static-libgcc 與 -static-libstdc++,將執行階段編入 EXE,減少外部相依。
- 使用 Dependency Walker 工具:檢查 EXE 缺少哪些 DLL,再補齊對應檔案。
0xc000007b 也常見於 32 位元應用嘗試載入 64 位元 DLL 的情況,部署前請確認架構一致。