目錄
Qt程序打包成一個(gè)單獨(dú)exe的方法
程序發(fā)布
程序打包
問(wèn)題
Qt程序打包成一個(gè)單獨(dú)exe的方法
Qt程序發(fā)布及打包,同時(shí)修改可執(zhí)行文件的圖標(biāo)。本教程使用Qt自帶的?windeployqt?工具外加Enigma Virtual Box打包工具。首先需要知道的是,Qt程序發(fā)布需要的程序是用?Release?方式編譯的。下面看一下具體的操作。
改變exe的圖標(biāo)
1、下載一個(gè).ico格式的圖標(biāo)(如:exe_ico.ico),將exe_ico.ico復(fù)制到工程目錄下。
2、工程目錄下新建一個(gè)空白txt文檔,文檔內(nèi)添加如下內(nèi)容
IDI_ICON1 ICON DISCARDABLE "exe_ico.ico"
3、將文檔后綴修改為.rc(如:exe_ico.rc)
4、在工程的pro文件添加如下內(nèi)容
RC_FILE = exe_ico.rc
另注:使用VS+Qt的開(kāi)發(fā)方式:在編輯器上的項(xiàng)目目錄(Resource Files)添加exe_ico.rc文件即可。
5、重新編譯程序,即可發(fā)現(xiàn)生成的程序圖標(biāo)變成了exe_ico.ico
程序發(fā)布
1、首先將Release方式生成的exe復(fù)制到一個(gè)單獨(dú)的文件夾下,如E盤(pán)根文件下的demo文件夾內(nèi)。
2、開(kāi)始菜單找到Qt目錄下的Qt 5.5 for Desktop (MinGW 4.9.2 32 bit)打開(kāi)命令行;
3、命令行進(jìn)入步驟1新建的demo目錄內(nèi)
4、輸入windeployqt 項(xiàng)目名.exe(如windeployqt QtTest.exe)
?
5、進(jìn)行到這,Qt程序所需要的庫(kù)都添加完成。但是有一部分是用不到的,想刪除的可以用程序依賴(lài)關(guān)系查看軟件來(lái)查看哪些文件用不到,感興趣的自己去百度吧。
或者 1、將Release方式生成的exe復(fù)制到一個(gè)單獨(dú)的文件夾下,如D盤(pán)根文件下的D:\SW_DEV\QT\Release_exe_temp文件夾內(nèi)。
2、打開(kāi)命令行工具cmd,進(jìn)入windeployqt.exe目錄(C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin>windeployqt.exe),使用 windeployqt 對(duì)生成的exe 文件進(jìn)行打配置動(dòng)態(tài)庫(kù)文件;?
3、C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin>windeployqt.exe D:\SW_DEV\QT\Release_exe_temp\MODBUS.exe
程序打包
安裝Enigma virtual box工具(安裝過(guò)程一直next就行)
Enigma virtual box官方鏈接:https://enigmaprotector.com/en/downloads.html
1、打開(kāi)提前安裝好的Enigma Virtual Box。具體操作如下:
?2、如上圖
1)瀏覽打開(kāi)demo下的Test.exe文件
2)點(diǎn)擊增加,選擇遞歸添加文件,選中demo文件夾點(diǎn)擊確定
3)點(diǎn)擊文件選項(xiàng),選中壓縮文件
4)點(diǎn)擊執(zhí)行封包。
3、將封包后的程序復(fù)制到其他地方,打開(kāi)測(cè)試,結(jié)束。
問(wèn)題
1. 之前打包很順利,沒(méi)有出現(xiàn)問(wèn)題。這次換了一臺(tái)電腦,就出現(xiàn)了問(wèn)題:
打包完成后,程序無(wú)法運(yùn)行,報(bào)錯(cuò):
?百度了一會(huì)兒,有人說(shuō)是因?yàn)椋?/p>
使用enigmavb打包程序時(shí),包含的根目錄應(yīng)該與待封包的主程序同級(jí)目錄,不然會(huì)報(bào)錯(cuò)Cannot load library QT5Core.dll
同樣的程序,下圖右邊不報(bào)錯(cuò),左邊報(bào)錯(cuò)
?我打包時(shí)不存在這個(gè)問(wèn)題,還是會(huì)報(bào)錯(cuò),所以不是這個(gè)原因;
最終確認(rèn)是環(huán)境變量的問(wèn)題:
因?yàn)榘惭bQT時(shí)沒(méi)有設(shè)置環(huán)境變量
開(kāi)始-計(jì)算機(jī)-右鍵-屬性-高級(jí)系統(tǒng)設(shè)置,高級(jí)選項(xiàng)卡-環(huán)境變量-系統(tǒng)變量
在系統(tǒng)變量里面找到Path,點(diǎn)擊編輯,在彈出的對(duì)話(huà)框中點(diǎn)擊新建,根據(jù)自己的QT安裝位置,輸入類(lèi)似C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin,后一路點(diǎn)擊確定即可。
設(shè)置完就可以運(yùn)行了
?
2.? 給到客戶(hù)之后,反饋還是不行:
?ps:之前我一直是在開(kāi)發(fā)的電腦上調(diào)試的,問(wèn)題1就處在那個(gè)時(shí)候,電腦有安裝QT軟件;問(wèn)題2現(xiàn)在是客戶(hù)的電腦,是沒(méi)裝過(guò)QT軟件的;所以問(wèn)題是:
把?Enigma Virtual Box
?打包過(guò)的 exe 放到另一個(gè)電腦使用,打開(kāi)exe會(huì)報(bào)錯(cuò):cannot load library Qt5Core.dll
(而實(shí)際上使用?Enigma Virtual Box
?打包時(shí),已經(jīng)包含了?Qt5Core.dll
?庫(kù))
查了一下,原因是:
- 這個(gè)并不是缺少 Qt5Core.dll 的原因,也不是這個(gè)庫(kù)有問(wèn)題。
- 是由于 【問(wèn)題解決】由于找不到libgcc_s_dw2-1.dll 、libwinpthread.dll、libstdc+±6.dll,無(wú)法繼續(xù)執(zhí)行代碼。重新安裝程序可能會(huì)解決此問(wèn)題。?這個(gè)問(wèn)題導(dǎo)致的。
- 缺少了 libgcc_s_dw2-1.dll,libwinpthread.dll,libstdc++-6.dll 這三個(gè)動(dòng)態(tài)庫(kù),打包后卻報(bào)錯(cuò) cannot load library Qt5Core.dll ,分析可能是因?yàn)?Qt5Core.dll 依賴(lài)以上的庫(kù)才能運(yùn)行吧。
解決方法:?
從 Qt5.12.0\5.12.0\mingw73_64\bin(版本不同目錄不同) 目錄下把這 libgcc_s_dw2-1.dll,libwinpthread.dll,libstdc++-6.dll 三個(gè)動(dòng)態(tài)庫(kù)拷貝過(guò)來(lái),再使用Enigma Virtual Box 打包的exe就不會(huì)報(bào)錯(cuò)了。
修改前和修改后目錄對(duì)比:
?重新打包之后,果然可以運(yùn)行了文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-509474.html
?這部分參考:https://javonpeng.blog.csdn.net/article/details/121926624?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&utm_relevant_index=2https://javonpeng.blog.csdn.net/article/details/121926624?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121926624-blog-125670700.235%5Ev28%5Epc_relevant_t0_download&utm_relevant_index=2文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-509474.html
到了這里,關(guān)于Qt程序打包成一個(gè)單獨(dú)exe的方法 Qt程序打包成一個(gè)單獨(dú)exe的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!