作者liu2007 (薯)
看板C_and_CPP
標題[問題][QT] windeploy 之後程式邏輯出錯
時間Sun Nov 28 02:21:25 2021
我的開發平台是 win7
工具是QT Creator
版本是Qt Core 5.15.2
在顯示主程式畫面之前我想要先檢查版本
沒問題之後才顯示主程式
以下是我的部分程式碼
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
if (checkLastVersion())
return 0;
MainWindow *w = MainWindow::getMainWindow();
EditTagDialog::initEditTagDialog(w);
EditSourceDialog::initEditSourceDialog(w);
return a.exec();
}
程式的順序是檢查版本以及資料庫是否存在,如果版本有問題或是資料庫不存在
會跳出對話框告知並要使用者作出行為。
如果版本正確、資料庫檔案存在則通過檢查,開始顯示主程式畫面。
這在我的開發器上執行得非常順利,沒有問題
但是當我使用windeployqt.exe部屬成可以發布的軟體的時候
卻發現程式跳過這行程式碼
if (checkLastVersion())
return 0;
無論版號是否正確,無論資料庫檔案是否存在
都直接顯示主程式畫面。
本來以為是我資料庫檔案部屬的位置錯誤,但發現即使有資料庫檔案
程式依然跳過檢查版號的步驟直接顯示
想請問該怎麼解決這個問題.....
(我在QT Creator上跑的config是Release的)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.225.144 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1638037289.A.A08.html
推 chchwy: checkLastVersion() 裡面的程式碼呢? 11/28 14:02
→ chchwy: 八成是裡面有東西寫錯 11/28 14:03
我發現原因了........
我在打包部屬的時候,忘記把https相關的dll:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
給打包進去....
因為我checkLastVersion裡面有一條是
如果request網頁失敗或是等待一定時間之後readAll()沒有東西
就跳過版本檢查的動作。
進行主程式的行為
而因為我沒有把dll打包進去,導致request一直沒有走https
所以request就會失敗
所以我的程式才會一直跳過版本檢查
※ 編輯: liu2007 (123.192.225.144 臺灣), 11/28/2021 23:41:30