记录Qt5.14.1+VS2019配置mysql驱动和protobuf的一点坑

20 篇文章 0 订阅

带作业要用,故踩坑

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
     好了,现在点击编译,发现还是跳红: L i b r a r y ′ m y s q l ′ i s n o t d e f i n e d . \color{red}{Library 'mysql' is not defined. } Librarymysqlisnotdefined. 经过尝试,发现直接注释掉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),这样程序可以正常运行,目前还未出现更进一步的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值