問題描述:編譯完成一個Qt程式後,在Qt Creator 環境中可以執行,但是單獨進入build檔案夾後,輕按兩下.exe檔案提示 程式無法啟動,缺少 Qt5Widgets.dll 檔案 。
解決過程:
- 首先上網下載下傳了 Qt5Widgets.dll 檔案,放到 system32 檔案目錄下,再次輕按兩下 .exe 檔案運作,提示 程式無法啟動,缺少 Qt5Widgetsd.dll 檔案。
- 初步判斷系統缺少了對 Qt 的一系列 .dll 檔案依賴。上網搜尋如何查找可執行程式的依賴檔案的方法,windows下可以使用 Dependency Walker 查找,或者使用 Process Explorer檢視正在執行的線程的實時依賴。Linux下可以用 ldd 指令。
- 下載下傳安裝了 Process Explorer ,在Qt Creator 開發環境中執行程式,用 Process Explorer 檢視運作程序的依賴檔案,具體操作 View -> Lower Pane View -> Dlls 或者直接Ctrl + D ,點選到正在運作的 Qt 線程,可以看到有 Qt5Widgets.dll ,路徑是 C:\Qt\Qt5.3.2\5.3\msvc2010_opengl\bin\Qt5Widgets.dll 。
- 設定環境變量,将 C:\Qt\Qt5.3.2\5.3\msvc2010_opengl\bin 添加到 Path 環境變量中。輕按兩下 .exe 程式運作,問題解決。
結論:編譯好的可執行程式存在各種各樣的依賴檔案(.dll),系統中依賴檔案對程式的支援需要環境變量 Path 的路徑正确。以後做安裝程式可能需要将各種依賴檔案同程式一起打包并在安裝時注冊環境變量。