【Debug】VS EXE运行“应用程序无法正常启动(0xc000007b)”

简介: 今天在VS2013发布应用程序后,本地电脑可以正常打开exe,但放到其他电脑无法正常启动,打印“应用无法正常启动(0xc000007b)。请单击“确定”关闭应用程序”。

 问题描述

今天在VS2013发布应用程序后,本地电脑可以正常打开exe,但放到其他电脑无法正常启动,打印“应用无法正常启动(0xc000007b)。请单击“确定”关闭应用程序”。

image.gif编辑

问题解决思路

这种情况主要还是编译电脑与运行电脑的dll的版本不匹配或者缺少dll文件,实际上缺少dll文件大多会直接提醒找不到的dll文件名,而版本不匹配则不好解决。

解决方法有两种:

    1. 了解编译电脑安装了哪些软件相关软件,比如Qt,vs2013等,在运行电脑上安装相应软件,基本上能解决这个问题。这种方法的前提是编译方与运行方可以进行沟通,但往往难于实现,即使能够交流,安装和搭建环境需要不少花费不少时间。
    2. 将运行电脑上可能不匹配的和缺少的dll文件,从编译电脑放入发布包。这种方法的前提是查找到软件运行需依赖哪些dll文件,以及判断哪些dll可能需要放入。

    查找依赖dll文件

    1. 在编译电脑上运行应用程序,打开windows任务管理器->性能,在左下角打开资源管理器

    image.gif编辑

    2. 选择CPU,勾选所关注的应用程序,在下方关联的模块中,可以清晰的看到程序所依赖的dll件,全选后将信息复制到txt,方便后面对照。

    image.gif编辑

    3. 按照依赖dll文件列表,将可能不匹配或者缺少的dll文件,从系统对应路径拷贝到应用程序目录。这里我拷贝了MSVCP120.dll,msvcp_win.dll,MSVCR120.dll,MSVCR120D.dll,msvcrt.dll几个文件。最保险的是将所有依赖dll都放入,但软件包会比较冗余。

    4. 将新的应用程序软件包放到其他干净的电脑试运行,若成功即可,若不成功可返回去拷贝其他dll文件。

    我的程序到这里已运行正常,后面就是打包发布了。

    相关文章
    QString与char *之间的完美转换,支持含有中文字符的情况
    QString与char *之间的完美转换,支持含有中文字符的情况
    2577 0
    |
    开发工具 git Windows
    经验:停止 cherry-pick,请开始 merge!
    cherry-pick 是一个比较常用的 git 操作,可以将一个分支上的 commit “精选”到另一个分支上。然而在最近的开发过程中,却时不时的遇到 merge 冲突。在下文中,我将会详细的分析 cherry-pick 造成冲突的原因,以及 cherry-pick 可能造成的其他更严重问题。
    7952 0
    经验:停止 cherry-pick,请开始 merge!
    |
    编解码 Ubuntu 虚拟化
    【问题解决】VMware安装ubuntu操作系统出现分辨率的问题
    【问题解决】VMware安装ubuntu操作系统出现分辨率的问题
    2307 0
    【问题解决】VMware安装ubuntu操作系统出现分辨率的问题
    【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
    【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
    3182 4
    Qt6.5打包(QT windeployqt不是内部或外部命令、QT错误:缺少libgcc_s_seh-1.dll ,无法正常启动(0xc000007b) 问题解决方法)
    Qt6.5打包(QT windeployqt不是内部或外部命令、QT错误:缺少libgcc_s_seh-1.dll ,无法正常启动(0xc000007b) 问题解决方法)
    1594 1
    |
    算法 Unix Linux
    【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
    【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
    1505 1
    |
    Java Spring
    解决SpringBoot中@RequestBody不能和Multipart同时传递的问题
    请根据你的实际需求选择上述方法之一来解决Spring Boot中 `@RequestBody`不能和 `Multipart`同时使用的问题。
    1992 1
    |
    C++ 索引
    【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
    【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
    1965 0
    |
    网络协议 安全 网络安全
    Qt 套接字类(QTcpSocket和QUdpSocket)解密:迈向 Qt 网络编程之巅
    Qt 套接字类(QTcpSocket和QUdpSocket)解密:迈向 Qt 网络编程之巅
    2575 0