解决qt发布程序时,在未安装运行环境中,mysql提示driver not loaded问题

一般我们都是采用如下的步骤:
1、先编译一个release;
在这里插入图片描述
2、然后在release目录下新建一个空白文件夹;
3、在开始,程序中找到对应的windeployqt程序;
在这里插入图片描述
我是用的ming64的编译器,所以选择的是mingGW64的windeployqt程序
4、切换到你的安装程序所在的目录
在这里插入图片描述
我的程序在E盘,所以路径是这个,然后运行windeployqt XXXX.exe(XXXX.exe是你程序的名称)

到这,你的目录里面基本就会有大部分你程序依赖的dll了,你的本机就能运行程序了。但是如果换到一个没有安装qt的环境里面会报错的。我的程序是用的qt+mysql,所以还要将mysql的依赖也拷进来。
现在的qt里面已经自动添加的sqldrivers这个文件夹,下面有了需要的libmysql.dll和qsqlmysql.dll。
在这里插入图片描述
但是依然会报这个错误,也试过网上的方法了。
https://blog.csdn.net/lynfam/article/details/6198670
https://blog.csdn.net/qq_40194498/article/details/79147972
这两个方法都试过了,但是跟我的情况都不符合。在我的虚拟机里面依然报错。然后我开始怀疑是不是mysql有问题。直到我看见这个帖子。
https://blog.csdn.net/qq_21469139/article/details/106630517?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

我按照里面的方法操作了,把mysql的lib和libeay32.dll,ssleay32.dll这两个dll都拷进去,果然能用了。
之后我又将里面的dll一一删除,终于发现是这个libcrypto-1_1-x64.dll和libssl-1_1-x64.dll的问题。
我装的是mysql8.0.23的版本,是64位的,在安装目录C:\Program Files\MySQL\Connector C++ 8.0\lib64里面是64位的,你如果是32位的就拷32位的,将这个dll复制到你程序的exe目录里面就可以了。在完全没有安装qt和mysql的环境里面就可以运行了
至此,这个问题算是解决了,原理不太懂,猜测是mysql连接的依赖问题。

Qt程序遇到 "QSqlDatabase: QMYSQL driver not loaded" 错误通常表示应用程序试图使用MySQL数据库功能,但是相应的Qt MySQL模块(QT_DBUS)没有成功加载或安装。这可能是由于以下几个原因: 1. **缺少库文件**:确保你的系统已经安装QtMySQL的支持库,如`libQt5Qsql_mysql`。如果没有,需要从Qt官方网站下载并安装相应的插件。 2. **环境变量配置**:检查Qt项目的构建环境,是否有设置指向MySQL数据库的路径,比如`QT_PLUGIN_PATH`可能需要包含MySQL插件目录。 3. **构建配置**:如果你是通过Qt Creator或者其他集成开发环境(IDE)创建的项目,确认是否在构建配置选择了包含MySQL支持的模块。 4. **版本兼容性**:确保使用的Qt版本与MySQL驱动版本兼容,有旧版驱动可能无法识别新版本的Qt。 为了解决这个问题,你可以按照以下步骤尝试: 1. **更新或重新安装Qt**: 确保你的Qt版本包含了MySQL支持。 2. **重新配置项目**: 在IDE,确保正确的组件已选,并配置好数据库连接信息。 3. **手动添加依赖**: 如果必要,可以手动将Qt MySQL模块添加到系统的动态链接库搜索路径。 4. **检查错误日志**:查看详细的错误信息,有提供更具体的解决线索。 如果以上步骤仍无法解决问题,建议查阅官方文档或在线社区寻找解决方案,或者寻求专业技术人员的帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值