1. 程式人生 > >如何解決Qt程式在其他電腦上無法執行的問題(Qt程式打包釋出)

如何解決Qt程式在其他電腦上無法執行的問題(Qt程式打包釋出)

這幾天在研究Qt,首先嚐試用Qt Creator編寫一些小程式來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程式,只能在本機執行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的程式設計時,也遇到過,無非就是一些執行時庫的問題導致的。當時的做法時,根據程式執行時報錯所缺失的庫,一個一個手工查詢和拷貝,收集全部所依賴的庫到程式目錄下,程式就可以正常運行了。因此,對於這次的情況,我原本也打算這麼做。但是,無意間在一篇部落格裡看到,Qt的設計者其實一早就料到有這種情況發生的,所以,他們為Qt專門設計了一個發行程式時自動對依賴庫打包的工具,可以全自動為使用者完成上述工作,那可就方便多了。下面就對這個工具的用法進行介紹:

1、首先找到這個工具,這個工具叫做“windeployqt”。它一般位於Qt安裝目錄下的mingw_XX\bin目錄下,像我的目錄就在C:\ProgramData\Qt\5.8\mingw53_32\bin。

此時,建議將整個目錄直接加入系統環境變數,便於後續使用。

2、編譯你的程式,注意必須是release版本。debug版本的貌似不行。

3、啟動cmd,進入到你要釋出的程式所在的目錄,比如我的程式放在D:\Test目錄下,就輸入”cd /d d:\test”,記住裡面一定要加”/d”的引數,否則將無法進入該目錄。

4、確認你的程式是用Qt Creator哪個模式設計的,總共有2個模式,Qt Widgets Application和Qt Quick Application,不同模式下的引數命令是不一樣的:

  • 在Qt Widgets Application模式下

輸入”windeployqt hello.exe”命令,其中hello.exe是我的程式名稱。

  • Qt Quick Application模式下

輸入”windeployqt hello.exe –qmldir”命令, 其中hello.exe是我的程式名稱,qmldir是你的qml目錄,這個目錄一般位於mingwXX目錄下,像我的目錄就在C:\ProgramData\Qt\5.8\mingw53_32\qml。

5、輸入上述命令之後,Qt就會自動複製它所依賴的各個外掛資料夾和 dll檔案、qm檔案,得到的就完整的 exe 程式釋出集合,依賴關係都解決好了,可以直接釋出到其他的電腦上執行。

6、要注意的是,按照上述步驟完成之後,仍有可能會提示dll缺失資訊,像我就遇到了缺失的提示。不過,好在此時缺失的dll很少(我遇到的就只有3個:libwinpthread-1.dll、libstdc++-6.dll、以及libgcc_s_dw2-1.dll),可以手動去複製,根據我的經驗,可以直接在C:\ProgramData\Qt\5.8\mingw53_32\bin目錄下面找到這幾個dll。

7、其他未盡事項,建議大家參考以下這篇博文,介紹的非常詳細。

http://blog.csdn.net/liuyez123/article/details/50462637

8、搞定,收工!