qt-- 程序打包迁移到另一台没装MySQL的电脑

在Qt5.9.9(MinGW5.3.032-bit)环境下,使用windeployqt打包的程序运行时出现驱动未加载错误。解决方法是将32位MySQL安装目录下的libmysql.dll复制到.exe同级目录。在未安装MySQL的电脑上运行时,需安装MySQL,无论32位或64位都能运行。程序能成功连接到数据库并执行操作。创建数据库和表需要注意大小写和数据类型。release版本的exe打包后约50M,debug版本则达600M。考虑使用sqlite可以避免额外的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发电脑:qt版本Qt 5.9.9 (MinGW 5.3.0 32-bit) MySQL版本MySQL5.7

windeployqt打包后,运行报错 driver not loaded 。将该动态库F:\Program Files (x86)\MySQL\MySQL Server 5.7\lib\libmysql.dll复制到.exe同级目录下,即可正常运行。一定要32位MySQL安装目录下的才行。和qt位数一致。

将.exe文件及其所在文件夹发送到没装MySQL的电脑上运行,会报错如下图

解决:再改电脑上安装MySQL,安装的是MySQL Server 8.0 64位,

安装选择的是随便选的only server不知道有什么区别。

安装成功后,再次运行.exe文件,会报错

此时qt连接到MySQL,但是找不到info;

使用控制台创建数据库(和表格);

有些系统上CREATE DATABASE要大写才行,

创建表格过程中id格式写成了varchar,一直创建不成功,也要注意。

创建完成,再次打开exe文件,就可以正常连接数据库,并对库进行操作

总结:

  1. exe文件中添加32位的libmysql.dll动态库,

  1. 电脑中安装MySQL,32位,64位应该都可以,这里是用32位qt生成的程序,新电脑里安装的是64位MySQL,是没问题的

  1. 创建数据库和表,因为我的程序里没有这个创建部分

使用release生成的exe文件进行打包,50M多;使用debug生成的exe文件打包,有600M。

release用来发布,debug用来调试。

windeployqt打包好后,运行exe文件,此时删除动态库,可以删除20M的动态库。

本来打算,不安装MySQL找了很多方法,涉及到这些动态库libcrypto-1_1-x64.dll和libssl-1_1-x64.dll libeay32.dll,ssleay32.dll

把mysql的安装目录Connector C++下的libeay32.dll和ssleay32.dll两个库拷到运行程序同一目录下

这些都没有解决问题,选择了安装MySQL。

还是用sqlite方便些,qt可以创建sqlite数据库,也不用在电脑上多安装软件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值