基于QT的可执行文件打包成用户可执行的exe文件
一、背景
在VS环境下开发的QT程序,在VS中可以正常的执行并且显示QT界面,但是直接通过.exe来执行程序是执行不了的。
二、原因
经过查阅资料,当我们用VS直接运行时,不报错是因为VS自己去找对应的dll(在你新建工程的时候,VS就帮你配置好了,如下图1),但直接运行release或者debug目录下的exe时,其只会在当前exe运行目录以及window环境变量目录中去找dll。当找不到时程序就会提示无法找到xxx.dll,如图二。
图1
图2
三、解决方法
3.1 获取你已经编译好的可执行文件xxx.exe,把此可执行文件放到你新建的一个目录下
例如:把xxx.exe文件放在此目录下 D:\EXE_Unpack\UIBotSibSimulatorQT\
3.2 查找windeployqt.exe的路径 (推荐你用Everything 这款软件来查找,比较快)
如果你记得你安装QT时的路径,那么不需要查找了,如果不记得,有两种方式可以查:
- 在电脑中查找,速度非常慢
- 使用Everything 查找,比较快,是一款非常不错的软件
我使用的是Everything 查找,如下图所示:
但是我们可以看到windeployqt.exe有好几个,但是用哪个呢?这就需要看你VS在配置QT的时候,用的是那种环境,那怎么看VS下QT的环境了?如下图所示
点击QT Options后会出现下面这个图,如下图所示:
我的VS2019配置的编译器路径是C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\,所以我要用的windeployqt.exe路径为C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin\下的windeployqt.exe,
除了下面如何使用windeployqt xxx.exe 命令外,你还可以通过配置环境变量来使用(添加C:\Qt\Qt5.13.2\5.13.2\msvc2017_64\bin的环境变量,快捷键Win+R打开运行面板,输入cmd,在Windows窗口中就可以通过使用windeployqt xxx.exe 命令来解决QT的动态库依赖问题,通过配置环境变量的方式,在这里是没有通过图示表现出来的)
如果没有报错就代表成功了。成功后目录如下所示:
你点击xxx.exe后就可以直接运行了