使用命令行 sxstrace 工具解决“无法解析参考 Microsoft.VC80.MFC”

870 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情

一、问题描述

双击 exe 文件报错如下

image.png

二、Dependency Walker (depends.exe) Home Page

将 exe 文件拖拽到 dependency 工具中,查看其依赖的 DLL

image.png

可以看到其中缺少 MFC80.DLLMSVCR80.dll,这里要注意的就是下载的版本问题,早期的 MFC 库是 win32 版本,需要放到系统对应的路径上C:\Windows\System32\;而MSVCR80.dll有 64 和 32 两个版本,在不知道的情况我们可以分别下载,然后分别放入 C:\Windows\SysWOW64\C:\Windows\System32\ 中。

如果有其他库的缺失,我们可以在这里下载。

三、命令行 sxstrace.exe 工具

  • 以管理员身份打开命令提示符工具,键入命令

    sxstrace.exe Trace -logfile:C:\trace.log
    

    其中C:\trace.log是自定义的输出路径,你可以自定义为 Disk:xxx.log

  • 运行待查找错误的 exe 应用程序,此时该工具将自动记录分析错误原因,形成错误的跟踪日志

  • 解析log文件,翻译成我们可以读懂的文字语言

    sxstrace.exe Parse -logfile:C:\trace.log -outfile:C:\trace.txt
    

    其中 -logfile:后面接待解析的文件路径, -outfile:后面接解析后的文件路径

    image.png

四、问题根源

打开C:\trace.txt文件,可以看到解析后的错误提示,如下所示

错误: 无法解析参考 Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。

五、解决方案

将问题放入搜索引擎,继续查找原因,可以看到

VC环境下载 c++运行库
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update
Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update)
其他各个版本的微软官方 Visual C++ 可再发行程序包最新支持