Qt应用程序“xxx.exe 已停止工作 故障模块msvcr120.dll”

Qt应用程序“xxx.exe 已停止工作 故障模块msvcr120.dll”

一、问题描述

相信许多程序员都遇到过这种问题,好不容易写好程序,准备打包啦。在自己电脑上运行时,一切都很正常,放到其他电脑上死活运行不起来、要么出现很多问题,最糟糕的是直接崩溃!最近就遇到了一个让我崩溃的问题,在其他电脑上运行时一直出现“xxx.exe 已停止工作 故障模块msvcr120.dll”,使用各种修复工具修复dll,使用depenency walk找各种依赖库都没有解决该问题。错误截图如下:

这里写图片描述

二、解决办法:

1、在尝试了各种办法之后没有效果,就把工程直接一直到另外一台电脑上编译好可执行程序再运行,打包后竟然可以运行啦。但是在把这个程序移植回来,还是会出现上述错误,于是我就对比到底哪里出了错。最后发现是路径的问题。因为程序中有些地方使用的是相对路径,打包后程序路径发生变化啦,所以才导致的上述错误。问题是发现啦,下面就是解决啦。

2、首先想到的是通过找到可执行程序的路径再去找文件的相对路径的方法,于是我想到了Qt中的函数QApplication::applicationDirPath()获取可执行程序的路径+文件名称,再转化成const char类型(因为我需要传这种类型),结果还是出现上面的错误。于是各种qDebug(),路径都没有问题,打包之后就是不行。最后抱着试试的态度,调用微软的API接口GetModuleFileName()函数,获取路径再转化成const char竟然解决问题了。

三、遗留的问题:

为什么使用QApplication::applicationDirPath()获取可执行文件路径再转化成const char*方法不行而GetModuleFileName()函数可以?有知道的请指教,谢谢!

<think>嗯,用户遇到了“外壳公用DLL停止工作”的问题,特别是和msvcr120.dll相关的故障模块错误。首先,我得回想一下之前用户提供的引用内容,看看有没有相关的解决方案。引用[1]提到了mfc120u.dll的问题,而msvcr120.dll也是Visual C++ Redistributable的一部分,所以可能需要重新安装运行库。引用[2]中用户通过安装DirectX修复工具解决了类似问题,这可能也是一个可行的办法。引用[3]提到Win7缺失dll文件的通用修复方法,比如系统文件检查器。引用[4]则涉及调试dll问题,可能需要检查程序兼容性或更新系统。 接下来,我需要整理步骤。首先,确认用户是否安装了正确的VC++运行库,特别是2013版的,因为msvcr120.dll属于这个版本。然后,使用系统文件检查器扫描和修复系统文件。如果问题依旧,可能需要使用DISM工具修复系统映像。此外,DirectX修复工具在引用[2]中有效,应该推荐。还有,检查Windows更新,确保系统补丁是最新的。如果这些都不行,可能需要干净启动来排查第三方软件冲突,或者重新注册相关DLL文件。最后,如果所有方法无效,考虑系统还原或重装系统。 另外,用户的问题可能涉及到软件兼容性,特别是64位和32位程序的问题,需要提示用户检查程序版本并安装对应的运行库。同时,提醒用户从微软官网下载运行库,避免使用不可靠的源,以免引入恶意软件。确保每个步骤清晰,用户能逐步操作,并解释每个步骤的作用,比如为什么需要运行sfc /scannow,这样用户理解后会更愿意尝试。</think>### Windows系统"外壳公用DLL停止工作"(msvcr120.dll故障模块)解决方案 #### 一、核心解决步骤 1. **安装VC++运行库** - 访问[微软官方下载中心](https://learn.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist) - 下载安装: - Visual C++ 2013 Redistributable(对应msvcr120.dll) - 最新版Visual C++运行库合集 - 注意同时安装x86和x64版本[^1][^2] 2. **系统文件修复** ```cmd sfc /scannow ``` - 完成后执行: ```cmd DISM /Online /Cleanup-Image /RestoreHealth ``` 该操作可修复系统组件完整性[^3] 3. **使用DirectX修复工具** - 下载增强版工具(含VC++修复功能) - 勾选"同时修复VC++"选项 - 自动检测缺失的dll文件并修复[^2] #### 二、进阶排查方案 1. **注册表修复(需管理员权限)** ```cmd regsvr32 /u msvcr120.dll regsvr32 /i msvcr120.dll ``` 2. **事件查看器定位** - 打开"事件查看器" - 查看"Windows日志 > 应用程序" - 筛选事件ID 1000/1001的崩溃记录 3. **硬件兼容性检查** - 更新显卡驱动(特别是Intel/NVIDIA核显) - 关闭超频设置 - 执行内存诊断工具: ```cmd mdsched.exe ``` #### 三、特殊场景处理 - **资源管理器崩溃时**: 1. 按Win+R输入: ```cmd explorer.exe /noucheck ``` 2. 禁用第三方Shell扩展(如文件预览插件) - **安装.NET Framework 4.8**: 部分外壳功能依赖.NET运行环境,建议通过Windows Update获取最新版本
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值