自己在网上查了一整天,终于解决了qt&vs2019 release生成的.exe文件移植到任意电脑上运行的问题了。
编译环境
qt5.14.2 vs2019
我是把qt环境整合在vs2019上了
出现的问题
1.缺少libgcc_s_seh-1.dll库,这里需要寻找我们release对应qt的库。
2.添加后显示应用程序无法启动无法正常启动(0xc000007b)
3.qml应用程序点击没有报错也无法打开
查看自己的编译环境
在去解决问题前,我们需要知道自己的编译环境才能正确解决问题。
qtcreator:可以在项目配置或者编译的地方看到
vs2019 打开扩展->qt vs tools->qt version
这些是我自己的编译环境,大家根据情况,知晓自己是什么样的编译环境即可。
解决方案
把我们的.exe放在一个新的文件夹(这个大家应该都知道)。
1.在我们最开始生成文件的时候,一定要使用对应版本的qt的cmd窗口,否则生成版本不对(使用其他cmd进入文件夹也不行,我就是用mingw32位cmd进64位文件夹,exe文件最后就是运行不了),我这里就有四个:
mingw 7.3.0是qtcreator生成文件使用的
MSVC是vs2019生成文件使用的。
注意:一定要看清你自己文件的编译环境是哪一个,版本不对应最后生成的库就会导致exe文件打不开。更不要用win的cmd或者powershell等。
2.打开对应的cmd窗口就会在对应的编译环境文件夹下面,只要输入命令:cd bin进入bin目录即可。然后运行命令:windeployqt.exe 文件路径\项目名.exe,如果是qml文件看第三条。
3.如果是qml文件,看这里,命令别使用错误,需要在使用命令:
windeployqt.exe 文件路径\项目名.exe -qmldir qml路径
比如:
windeployqt.exe C:\Users\xxx\source\repos\QtQuick_IOCtrl\publish\hello.exe -qmldir C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\qml。
注意:-qmldir不能少,不然扫描不到qml文件夹,最后缺少组件,你会发现点击之后没有报错程序也没运行。
4.qtcreator生成的文件的文件夹可能会缺少libgcc_s_seh-1.dll库,添加对应qt路径下的文件,我的路径是C:\Qt\Qt5.14.2\Tools\mingw730_64\opt\bin\libgcc_s_seh-1.dll,大家自行寻找即可。
对于vs2019生成的文件,通常会缺少vs2019相关的库,建议这种情况下生成的文件在有相同vs环境的电脑上运行(因为缺的库挺多的)。