看板 C_and_CPP 關於我們 聯絡資訊
我的開發平台是 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