一般我们都是采用如下的步骤:
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连接的依赖问题。