解决the application was unable to start correctly(0x000007b)与 缺少VCRUNTIME140.dll

问题描述

今天出现了C程序在本地VS上面运行正常,生成的exe文件在本地使用命令行调用也正常,但是放到服务器使用命令行调用上就出现“the application was unable to start correctly(0x000007b)”的问题,如图:
在这里插入图片描述

解决过程:

1.使用分析工具(Dependency Walker)分析dll依赖问题

这个软件可以分析exe、dll的依赖项,用来查找调用了哪些依赖和缺少哪些依赖,官网下载
**使用方法:**将exe、dll拖到Dependency Walker程序窗口即可。

缺失的dll会以黄色问号显示,可以根据这里缺失的DLL名称来在网上查找解决方案,本次问题的解决就是查了缺失VCRUNTIME140.DLL这个动态链接库才查询到问题所在的。
在这里插入图片描述
也可以根据底下的信息查找解决方法:
在这里插入图片描述

2.查找解决问题的方法

通过查询VCRUNTIME140.DLL,看到别人的一些解决方法:

C++2015卸载重装一遍 或者下一个directX增强版把vc运行库检查一遍
https://tieba.baidu.com/p/5370368791?red_tag=1965842565

这样我们就知道这应该是vc的运行库依赖有缺失,接着查找,最后解决方法如下:

VS静态编译C/C++解决程序丢失 VCRUNTIME140.dll
https://jingyan.baidu.com/article/a681b0de7a173c3b1843462b.html

方法:在项目上右键进入属性页面,将运行库改为 多线程(/MT) 即可,如①处。
在这里插入图片描述
注意:②处需要对应,如果你配制的属性页是Debug模式的,但是生成的是Release模式的,那么你会发现配制根本不生效。

之后再进行项目的生成,此次的问题就解决了。

附加:

1.Dependency Walker使用&注意

如何正确查看dll依赖,并查找问题:
对于系统的DLL可以不用展开看,但是用户自己的DLL一定要展开,看看它里面还调用了哪些DLL,因为如果这个DLL缺少依赖的DLL势必影响到我们的程序的运行。

如何防范生成的软件dll依赖缺失问题:
严格的讲,在我们发布应用程序时一定要看看程序需要哪些组件依赖的,需要的就把它带上。因为用户的电脑上是没有开发环境的,不可能有这么些特定编译器的运行库。
https://blog.csdn.net/mfcing/article/details/45933397

如上面引用的文字所说,我们如果要防范这样的问题,我们需要查看我们自己引入的DLL,例如AVCODEC-57.DLL,AVUTIL-55.DLL这些。
但是本例中并不是自己引入的DLL问题,根据前文所说,我们已经知道了是VC运行库的缺失(也就是开发环境中带的DLL),如下图:
在这里插入图片描述
这样我们就能想到,我们应该将开发环境中的依赖也一起打包,具体操作就是改变VS中运行库的选项。

2.使用VS编译选项“运行库”介绍:

运行库就决定了程序是动态链接还是静态链接,详细如下:

动态链接为D,静态链接为T。
两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。
在调试模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)
在发布模式下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)

https://blog.csdn.net/qq_33757398/article/details/82156956

本次程序是Release模式的程序,所以我选用多线程/MT,将VS开发环境中所需要的运行库打包进程序,问题得以解决。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值