记录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),这样程序可以正常运行,目前还未出现更进一步的问题。

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