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

Posted

技术标签:

【中文标题】找不到 c:\\windows\\system32\\mfc100d.dll【英文标题】:Unable to find c:\windows\system32\mfc100d.dll找不到 c:\windows\system32\mfc100d.dll 【发布时间】:2015-03-19 03:32:44 【问题描述】:

我有一个很奇怪的问题。

我正在尝试运行我使用 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 路径中时,为什么会出现错误。

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

【问题讨论】:

【参考方案1】:

在 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 位应用程序。

【讨论】:

谢谢,设置了路径但找不到 dll 真是令人费解。我不知道 32 位 dll 在 64 位系统上的不同行为。【参考方案2】:

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

【讨论】:

我的路径已设置并包含C:\Windows\System32。还有哪些变量可能与此相关?【参考方案3】:

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

【讨论】:

我已将路径设置为C:\Windows\System32,mfc100d.dll 存在于该文件夹中。但是,我仍然收到错误消息。该文件与 Visual Studio 文件夹中的文件相同,我使用 FC /b 进行了比较 @uncletall 尝试使用icacls /reset 重置文件权限。另外,检查你没有拼错路径。然后重新启动并确保您的设置实际发生(例如,使用 cmd 命令path 并检查其输出)【参考方案4】:

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

【讨论】:

以上是关于找不到 c:\windows\system32\mfc100d.dll的主要内容,如果未能解决你的问题,请参考以下文章

Windows下ping域名找不到主机

win32api 找不到指定的模块

找不到 DllRegisterServer 入口点

Visual Studio 在 Windows 7 64 位机器上找不到 CIODMLib 项目参考

arduino驱动安装找不到驱动文件

nvspcap64.dll 找不到指定的模块