帶作業要用,故踩坑
MySQL驅動
當重新裝了最新的mysql-8.0.20-winx64後準備寫代碼,發現QSqlDatabase拋出錯誤信息:驅動未加載,判斷是plugins文件夾下的mysqldriver內缺少了對應的dll
解決方法是打開Qt源碼 [略]Qt\Qt5.14.1\5.14.1\Src\qtbase\src\plugins\sqldrivers\mysql
打開mysql.pro,選擇對應的編譯器進行編譯,由於我使用msvc版本大於原生kit的版本(在原基礎上替換了編譯器爲vs2019的),所以在編譯時會提示msvc-version.conf已加載但是QMAKE_MSC_VER未設定。
打開[略]Qt\Qt5.14.1\5.14.1\msvc2017_64\mkspecs\common下的msvc-version.conf,拉到底部發現
所以在文件開頭的warning前直接寫上:QMAKE_MSC_VER = 1919
好了,現在點擊編譯,發現還是跳紅: 經過嘗試,發現直接註釋掉pro中的這一行即可
分別在debug和release下編譯後,把生成的dll文件扔到對應編譯器版本的plugins\sqldrivers下面或者自己的發佈目錄當中,再次編譯運行程序便能成功加載到QMYSQL驅動
添加Protobuf依賴
先從github上下載最新的protobuf-cpp源代碼包,使用cmake編譯,這裏推薦使用msbuild生成器,因爲我用mingw64的mingw32-make無法編譯,懶得做更多修改嘗試了…
編譯後,將github上下載的包中的src文件夾添加到項目的INCLUDE_PATH,使用cmake生成vs的sin後,打開解決方案進行debug和release版本的編譯。
將生成的libprotobuf(d).(lib/dll)複製到項目目錄下,我這裏直接LIBS+了debug版和release版的dll ,添加了hh和cc文件後初次編譯程序發現鏈接器報錯,百度後發現需要在.hh內添加宏PROTOBUF_USE_DLLS,我們直接選擇在pro文件內添加DEFINES += PROTOBUF_USE_DLLS即可
編譯通過後運行程序debug版在操作protocol對象時卻拋出異常,abort了操作,後來嘗試修改libprotobufd.dll文件名爲libprotobuf.dll(release版的運行目錄下直接複製生成的libprotobuf.dll,debug版的運行目錄下複製debug生成版,去掉最後的d),這樣程序可以正常運行,目前還未出現更進一步的問題。