Qt 打包发布程序,解决找不到msvcp140.dll等动态库问题正确方案

关键字

Remember to call vcvarsall.bat to complete environment setup!

Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.

Qt 找不到 msvcp140.dll, msvcp140d.dll, vcruntime140.dll, vcruntime140d.dll, ucrtbased.dll

问题分析

当你用MSVC编译器编写的程序,在使用Qt的打包工具windeployqt.exe时,在终端第二行会看到 “Remember to call vcvarsall.bat to complete environment setup!” 字符串;在打包过程中还会遇到 “Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.”

大部分人可能没在意,也觉得无关紧要。但是,在你的电脑上没问题,并不代表别人的电脑就正常。比如在运行程序时会遇到找不到 VCRUNTIME140_1.dll找不到msvcp140.dll ,ucrtbased.dll等等VC库情况。

在这里插入图片描述
在这里插入图片描述

MSVC编译器编写的程序就会遇到以上VC运行库缺失的问题。

也就是说,在打包的过程中,只是把Qt的相关动态库部署好了,但是VS (或者VC)的运行环境并没有部署。

所以为了杜绝隐患,应该重视这两个警告。那么如何解决呢

解决方案

目前探索了很多种解决方案,供大家参考。至于,手动拷贝缺失的动态库也可以解决问题,但不够优雅,或者太low。

方案一

这种方法最省事,一次设置,后续都能用。解决方案就是添加一个VS的环境变量。

首先,找到VS的安装目录,比如我的是默认安装在C盘。复制路径C:\Program Files\Microsoft Visual Studio\2022\Community\VC

打开环境变量,添加一个系统变量,变量名为VCINSTALLDIR,变量值为C:\Program Files\Microsoft Visual Studio\2022\Community\VC
在这里插入图片描述
在这里插入图片描述

然后重新打开Qt的命令行,执行

windeployqt E:\Code\CppProject\QtWidgetsApplication1\x64\QtWidgetsApplication1.exe

可以看到,这下没有Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.警告了,同时,输出里增加了一些VC的动态库。这就说明,我们打包的同时,已经把VC的环境带上了。
在这里插入图片描述

方案二

不想加入环境变量怎么办,也可以做到。但稍微有点繁琐。

首先搜索一下 vcvarsall.bat的路径,我的路径是C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
在这里插入图片描述

然后,打开Qt的命令行配置环境,输入

call "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat"

在这里插入图片描述
可以看到报错了,原因是我们没选择对应x86,x64位数。在尾部根据自己编译的位数加上即可:

call "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat" x64

在这里插入图片描述
这时,就显示已经初始化的x64的环境。

然后再执行打包命令即可,可以看到跟方案一结果一致。
在这里插入图片描述

方案三

还可以使用VS的命令行进行打包,打开VS的命令行会自动配置好VS的环境,就不需要我们手动配置了。然后调用windeployqt.exe去打包就行了。

根据版本去打开对应的VS命令行,比如我这里编写的程序是x64位,那我就打开x64 Native Tools Command Prompt
在这里插入图片描述
在这里插入图片描述
可以看到,已经自动设置好了VS x64的环境。那么接下来调用对应版本的windeployqt程序进行打包。

D:\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe E:\Code\CppProject\QtWidgetsApplication1\x64\QtWidgetsApplication1.exe

在这里插入图片描述

方案四

最后一个办法,那就是自己不处理,交给用户处理。如果遇到这个问题,就安装vc运行库,下载对应版本安装即可。
在这里插入图片描述
Microsoft C 和 C++ (MSVC) 运行时库下载地址:
https://docs.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170

总结

以上就是我总结的四种解决方案,都可以解决VC运行环境的问题。

  • 1
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

L-Super

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值