MSVCR100D.DLL和依赖性walker

时间:2013-11-19 09:43:53

标签: c++ visual-studio-2010 assemblies .net-assembly

我把MSVCR100D.DLL放到c:\ windows \ system32文件夹中,但依赖者walker仍在抱怨它丢失了。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

Dependency walker在很长一段时间内没有更新。我认为作者只是放弃了试图跟上Windows开发的步伐。特别是解决并排清单查找规则是一个非常难以解决的问题。 SetDllDirectory()无法静态解析。关于延迟加载的DLL并不是很聪明,它对转发器的DLL导出一无所知。你几乎总是得到一个实际上没有丢失的丢失的DLL的大清单。

在64位操作系统上使用32位版本也不能正常工作,在msvcr100d.dll的情况下可能出错。哪个必须复制到c:\ windows \ syswow64,而不是system32用于32位可执行文件。您确实希望支持msvcrt版本10及更高版本的本地部署。换句话说,只需将DLL复制到与EXE相同的目录中即可。将它放在Windows系统目录中会让你暴露出太多的DLL Hell,远远超出选择错误的系统目录。

如果您仍有问题,那么SysInternals的ProcMon是更好的工具。它生成的跟踪显示了它查找DLL的确切位置。