記錄Qt5.14.1+VS2019配置mysql驅動和protobuf的一點坑

帶作業要用,故踩坑

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
     好了,現在點擊編譯,發現還是跳紅:Librarymysqlisnotdefined.\color{red}{Library 'mysql' is not defined. } 經過嘗試,發現直接註釋掉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),這樣程序可以正常運行,目前還未出現更進一步的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章