找不到 c:\windows\system32\mfc100d.dll

Unable to find c:\windows\system32\mfc100d.dll

我有一个很奇怪的问题。

我正在尝试 运行 我使用 VS2010 构建的控制台应用程序并收到错误 mfc100d.dll 未找到。但是这个 dll 存在于 c:\windows\system32 中,我的路径是 c:\windows\system32

如果我将文件从 c:\windows\system32 复制到我的当前目录,它就可以工作。

如果我将 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC100.DebugMFC\ 添加到我的路径中,它也有效。

一切正常,直到我昨天卸载了一个程序并安装了它的新版本。但我无法理解的是,当 mfc100d.dll 确实存在于 C:\windows\system32 路径中时,为什么我会收到错误消息。

而且,是的,我确实有权读取该文件,我还能如何复制它...

如果您卸载了某些东西,可能是您的环境变量被重置了。你检查过了吗?

尝试检查您的 PATH,看看搜索路径中是否存在多个 mfc100d.dll,其中一个损坏了。 (可能是因为卸载)

检查控制台应用程序在何处尝试使用 Dependency Walker 获取 mfc100d.dll 文件。然后将 mfc100d.dll 放置到它试图获取它的路径。

在 64 位 Windows 上的 32 位应用程序 运行 中,访问 System32 目录会被重定向到 SysWOW64 目录。从 32 位 Python 中获取此输出,例如:

>>> import os
>>> print(os.path._getfinalpathname(r'C:\Windows\System32\mfc100d.dll'))
\?\C:\Windows\SysWOW64\mfc100d.dll

请记住,由于 WOW64 和 UAC,文件系统和注册表路径都可能被重定向,因此您并不总是完全得到您所要求的!如果由于某种原因你最终通过 SysWOW64\cmd.exe 得到 运行 32 位命令提示符,这会让你措手不及,尤其是当你最终得到 运行 32 位和 64 位的混合时。同一控制台中的位应用程序 window.