測試過程:
下載程式碼:
1. 先讓qmake去掃整個程式檔案架構 (產生hello.pro)
%> qmake -project
2. 再用qmake依hello.pro產生Makefile
%> qmake
3. 開始編譯
%> mingw32-make release
若直接在原本的command windows執行檔案,會成功,但是,若是用點滑鼠點兩下的方式,會失敗,並且出現出現找不到mingwm10.dll的錯誤。
原因是,目前使用的是動態連結lib的方式,所以,在執行時,會去%PATH%的目錄中尋找相對應的lib。因為,我們若是用QT的command windows,因為,%PATH%都已經設定好了,所以,可以找到相對應的lib。
若我們直接用滑鼠點兩下的方式,吃的是系統預設的PATH,所以,會出現找不到lib的錯誤訊息。
有兩個解決方式
1. 把需要的lib放在系統的%PATH%路徑中
2. 編譯出靜態連結執行檔(執行檔會變的比較大)
Q: 出現找不到mingwm10.dll錯誤
A1: 在Makefile裡面把-mthreads刪除
A2: 直接在hello.pro加入以下內容 (參考qmake.conf相對應的Flag)
QMAKE_CXXFLAGS_EXCEPTIONS_ON -= -mthreads
QMAKE_LFLAGS_EXCEPTIONS_ON -= -mthreads
A3: 直接在win32-g++\qmake.conf 移除掉所有的"-mthreads".
Q: 出現找不到libgcc_s_dw2-1.dll錯誤
A1: 在Makefile裡面的FLAGS加入-static
Q: 出現找不到QtCore4.dll錯誤
A1: ...
A2: 直接把mingwm10.dll, libgcc_s_dw2-1.dll, qtcore4.dll, qtgui4.dll放到與執行檔同一個目錄
參考資料:
用Qt Creator開發Windows的簡單計算機的程式
記錄-如何建立MSVS的Qt編譯環境?
[Mobile]Nokia的開發工具-Qt framework
[Qt密技]執行Qt程式時找不到相關dll檔該怎麼辦?
Removing mingwm10.dll dependency
QT static 出現找不到libgcc_s_dw2-1.dll
windows下 Qt 静态编译
Qt 程序在 windows 下的发布
Deploying an Application on Windows