2014年11月24日 星期一

無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll...

        今天嘗試寫一個簡單的 Qt 應用程式編譯完後,透過 Qt Creator 執行程式並沒有發生任何問題,但是直接執行 exe 檔卻發生 "無法啟動程式,因為您的電腦遺失 QtWidgetsd.dll..." 如下圖所示:

        這個問題就如你開發 MFC 程式發布應用程式時是用 Dynamical Link 而非 Static Link,但是 Qt 要編譯成 static link 需要的步驟比較複雜且有 licensing 的問題 (請參考: Making the right licensing decision )。

        所以在開發階段解決這個問題最快的方式是將  DLL 所在的目錄加入到系統路徑中,以我的例子就是將 "C:\Qt\5.3\msvc2013\bin" 加入到 PATH 中即可。

        另外如果你想要查詢該程式所相依的 DLL 檔案有哪些,可以使用 Dependency Walker 工具來查看,如下所示:


        除了將 Qt DLL 檔案所在的目錄加入到 PATH 外,你可以自己手動拷貝所需的 DLL 檔案與執行檔相同的目錄下,透過 Dependency Walker 工具我只查到與 Qt 相關的 DLL 檔案有 Qt5Widgetsd.dll、libGLESv2d.dll、Qt5Cored.dll、Qt5Guid.dll、icuin52.dll、icuuc52.dll、icudt52.dll;但是當執行時卻出現下列錯誤訊息應用程式就被強迫關閉。


      經過實驗最後發現必須額外放入 libEGLd.dll 檔案才可以正常執行應用程式。

[參考鏈結]

沒有留言: