前言
在開發過程中遇到Qt的bug,特別是QAccessibleWidget模塊內部崩潰的問題,官方的BugReport可能無法及時修復。為了不耽誤項目,決定自行修改Qt源碼並進行編譯。
環境搭建
在Windows 10專業版64位系統下,使用visual studio 2019作為編譯器。此外,利用git和小烏龜tortoiseGit進行版本管理。安裝時選擇64位且為LTS版本的ruby、python和perl,安裝路徑確保無中文或空格,以避免編譯時出現問題。
目標與依賴
目標是編譯Qt5.15.2版本,支持msvc2019編譯器的64位Windows環境。所需依賴包括ruby、python和perl,均從官網下載安裝包。安裝過程簡單,選擇「下一步」,確保「自動添加到系統環境變數」選項被選中。
Qt源碼獲取
Qt源碼可從官方網站下載頁面或github倉庫獲取。使用git clone或小烏龜下載至指定路徑,如「F:\qt\qt5」。下載完成後,通過小烏龜的右鍵菜單更新子模塊至tag 5.15.2版本。
編譯過程
在倉庫上一層目錄下創建bat腳本,引用vs編譯器環境變數並執行configure命令。配置項包括指定安裝路徑、使用開源協議、自動確認協議、指定庫類型、跳過某些模塊的編譯、開啟多進程編譯、只編譯release模式、優化文件尺寸等。編譯過程可能需要2個半小時左右,完成後執行nmake install命令進行安裝。
bug修復與測試
針對QAccessibleWidget模塊的bug,定位到問題根源並進行修改。將修改後的dll替換到已安裝的Qt庫中,程序正常運行且測試未再出現空指針錯誤。然而,只替換一個dll不可靠,需要確保編譯環境與官方一致。遇到的另一個問題是,替換dll後打包的程序在某些用戶電腦上啟動後界面無法正常顯示,這表明只替換dll可能不足以解決兼容性問題。最終,替換所有新編譯的庫,確保了程序的穩定運行。
㈡ QT從MinGW轉MSVC遇到的問題
當你需要在開發中使用QWebengine,但受限於其只支持MSVC編譯環境時,這篇文章將帶你解決這個問題。
首先,配置MSVC環境是關鍵步驟。你需要下載Visual Studio 2017,確保只勾選"C++桌面開發"選項。同時,為了兼容性,建議安裝Windows Kits,特別是Debugging Tools for Windows(即Windows Kits 10)。如果你選擇手動下載Windows Kits 10,務必確保是與VS2017版本匹配的。總體來說,直接下載VS2017更加便捷。
安裝完成後,打開QT,接下來需要在原本使用MinGW編譯的項目pro文件中添加必要的配置代碼。具體位置可以根據項目需求靈活設置。
接下來,對配置文件進行必要的修改,以確保項目能夠識別並使用新安裝的MSVC編譯器。
如果你的項目還需MySQL驅動,可以參考之前的經驗,將驅動添加到MSVC環境中。
如果項目涉及QWebengine,可能需要卸載並重新安裝QT,確保在安裝過程中勾選Webengine選項。
總結起來,這個過程包括安裝VS2017和Windows Kits,調整pro文件配置,修改配置文件,添加MySQL驅動,以及可能的QT重裝。每個步驟都需要仔細操作以確保順利過渡到MSVC環境。
㈢ Qt 6.5.2 Creator MSVC 編譯器配置
對於Qt 6.5.2版本,MSVC編譯器的配置與網上文章有差異,下文詳細記錄。
環境為Windows 10,使用Qt Creator 11.0.2版本。Qt 6.5.2需要配合MSVC 2019。
直接下載MSVC 2019可避免安裝整個Visual Studio,節省資源。下載地址為:microsoft.com。
嘗試安裝VS Community 2019,但Qt Creator無法識別MSVC編譯器。
解決方法是僅下載MSVC,不安裝Visual Studio。安裝過程無需修改注冊表。
正確配置MSVC(2019)為Qt編譯器的詳細步驟可參考ld246.com文章。
解決方案是安裝Build Tools for Visual Studio 2019(版本16.11)。此工具包含獨立的MSVC編譯器、庫和腳本,比完整安裝VS更節省資源。
安裝完成後,確認目錄:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"包含文件"vcvarsall.bat",問題解決。
至此,Qt Creator已經能自動檢測到MSVC 2019的編譯器。