1. 程式人生 > >QT學習——qt程式在不同電腦上成功執行(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、其他未盡事項,建議大家參考以下這篇博文,介紹的非常詳細。

8、搞定,收工!

相關推薦

QT學習——qt程式不同電腦成功執行Qt程式打包釋出

這幾天在研究Qt,首先嚐試用Qt Creator編寫一些小程式來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程式,只能在本機執行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的程式設計時,也遇到過,無非

python 在不同CPU同時執行多個程式

出處/From https://www.quora.com/If-you-run-Python-under-a-dual-core-CPU-then-can-you-run-two-Python-programs-at-once-one-that-utilizes-1-core-and-the-other-u

一個關於VS2008在其他未安裝VS2008的電腦無法執行編譯的程式的問題

這個應該是個向我這樣菜鳥普遍碰到的問題 一個困擾我很久的問題=.= 呵呵 剛開始學C++的時候就開始用VS2008(VC2008,VS9.0)了 當然新手剛開始學C++的時候都會新建Win32控制檯程式的專案了 這倒沒什麼問題 但編譯後生成的.exe應用程式不能在別的電腦上

程式在遠端主機後臺執行 &、nohuo、 screenLinux 使用技巧

作為一個系統運維人員,你是不是經常需要 SSH 或者 telent 遠端登入到 Linux 伺服器? 你是不是經常為一些長時間執行的任務而頭疼,比如系統備份、ftp 傳輸等等。通常情況下 我們都是為每一個這樣的任務開一個遠端終端視窗,因為他們執行的時間太長了。必須等待 它執

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

這幾天在研究Qt,首先嚐試用Qt Creator編寫一些小程式來練練手。但是,在這個過程中卻遇到了一個問題:使用Qt Creator編寫的exe程式,只能在本機執行,跑到別的電腦上就無法運行了,提示缺少各種各樣的庫。這個問題,我之前在搞VS-MFC的程式設計時,也遇到過,無非就是一些執行時庫的問題

Qt程式移植到其他電腦無法執行的解決方法

程式寫好後的最終目的是交付使用者使用。由於各人電腦上的系統環境千差萬別,因此,即使是採用了 release 方式編譯,在你自己電腦上生成的 Qt 可執行程式換到別人的電腦上,依然可能無法執行。1.首先,以 release 方式編譯原始碼,然後將生成的 exe 程式放到一個單獨

java程式在eclipse打jar包,Linux成功執行

、eclipse下的java專案結構如下圖所示: 2、manifest.mf檔案定義如下所示  注意: ① manifest.mf檔案最後一行必須是一個空行。 ② lib/dom4j-1.6.1.jar和lib/jaxen-1.1-beta-7.jar之

MFC程式電腦雙擊執行無反應及缺少MSCOMM32.OCX的問題串列埠控制元件一鍵註冊

有時,由於我們使用了串列埠控制元件的原因,導致我們MFC生成了Release檔案依舊無法執行的問題(具體表現為雙擊EXE沒反應)這裡我們使用串列埠控制元件註冊就可以解決問題注意:請確保你的程式使用的是靜態連線方式,且出現如上所述的問題描述此方法才有效,下圖為靜態連線方式的設定

你的vs編譯軟體是如何使你的程式電腦跑起來的呢?

一. 一個編譯軟體編譯一個程式的過程分為編譯,彙編,連結四部分,然後得到一個可執行的檔案,即就是我們的目的碼。目的碼當然就是我們有一定邏輯順序的二進位制數啦! 二. 下來簡單的說一下,編譯

Qt學習之路十三—— 再談TCP/IP多客戶端連線伺服器

一、TCP和UDP的區別這裡我會用一個表格來顯示這兩者的區別比較項TCPUDP是否連線面向連線無連線傳輸是否可靠可靠不可靠流量控制提供不提供工作方式全雙工可以是全雙工應用場合大量資料少量資料速度慢快二、incomingConnection函式這個函式和之前講過的newConn

基於Opencv平臺開發的程式在其它電腦獨立執行

//win32控制檯程式需要的lib vfw32.lib comctl32.lib //debug版 //opencv用到的第三方lib //opencv各模組的lib .\opencv_lib\IlmImfd.lib .\opencv_lib\libjasperd.lib .\opencv_lib\libj

Qt學習筆記-仿大佬讀取setting檔案簡單工廠模式

檔案如下: 程式執行截圖如下: 程式碼如下: widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QHostAddress> class

使用vscode中的外掛Settings Sync實現不同電腦同步vscode的配置

1、Settings Sync是vscode中同步設定和安裝外掛的小工具,在老電腦和新電腦的vscode的擴充套件商店中搜索並安裝它 2、在老電腦上登陸Github>Your profile> settings>Developer settings>p

Qt程式上線後,崩潰處理含微軟編譯器命令

C/C++ 編譯器選項用於 x64 的 Microsoft (R) C/C++ 優化編譯器 16.00.40219.01 版優化/O1 最小化空間 /O2 最大化速度 /Ob 內聯擴充套件(預設 n=0) /Od 禁用優化(預設) /Og 啟用全域性優化 /Oi[-] 啟用內部函式 /Os 優選程式碼空間 /

android開發:如果處理,同樣的安卓應用程式不同機器執行正常,但是與後臺伺服器互動響應時間不一樣的問題?

情景問題 專案中用到一個安卓應用程式,在不同的機器上,執行正常,與後臺伺服器互動響應時間不一樣,當是安卓應用程式在接受到請求,處理一下耗時操作,比如操作s qlite3,沒有即時反饋資訊給

學習筆記:楊輝三角形莫隊組合數莫隊LULU胡策

與唐林康的決戰在即,麵筋哥需要一件壓場子的終極武器。 麵筋哥手上有 M 個麵筋,能量值分別為 1-M 的整數。現在麵筋哥想要利用這些麵筋制 作他的終極武器:Ex 麵筋棒。Ex 麵筋棒是一種能夠發射強大劍氣的能量武器。它由一些面 筋按次序連線而成。Ex 麵筋棒可能會發射失敗,麵筋哥無法承受

如何在同一臺電腦同時執行兩個Tomcat(關於Invalid character found in method name.HTTP method names must be token.錯誤資訊)

今天在學習一個專案的時候需要用到Tomcat8,而我的Tomcat版本是7,因為Tomcat7用的久了比較習慣又不想解除安裝,所以打算兩個一起用,在網上查了同一臺電腦上可以執行兩個Tomcat後,就開始部署Tomcat8. 在看了一篇前輩的經驗後將Tomcat8的start

一樣的程式碼在一臺電腦執行在另一臺上為什麼就出錯呢

DataList生成HTML控制元件ID不一致Winform反射不了嗎DataList生成HTML控制元件ID不一致Winform反射不了嗎 怎麼將兩個程式的按鈕合二為一C#如何實現TCP的SYN掃描怎麼將兩個程式的按鈕合二為一C#如何實現TCP的SYN掃描 輸入一個數N,求

vs2008 控制檯程式在win2000無法執行的 提示缺少dll等問題

win32控制檯程式 在vc 6.0下編譯是可以在win2000上執行的,但是 vs2008 以上 要想在win2000執行 就得修改一定的東西。 vs2008: 提示缺少4個dll :  1.ms

jfinal+H5的websocket 實現同一賬戶在不同地點不同電腦只能登陸一個互相踢下線

公司專案需求,因為專案是開賬戶賣錢的,為了避免有的使用者開一個賬戶N個人用,所以要求A賬戶只能在一個地點登入,別人如果使用A賬戶在別的電腦或者地點登入後就會吧上一個人給踢下線,當然也可以讓後一個登入的人登入不了,這都是看你邏輯怎麼控制的。 效果類似是qq登入的效果,先來張