MSVCR100D.DLL和依赖项遍历器 [英] MSVCR100D.DLL and dependency walker

查看:100
本文介绍了MSVCR100D.DLL和依赖项遍历器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将MSVCR100D.DLL放入了c:\windows\system32文件夹中,但是依赖项walker仍在抱怨它丢失了。有任何想法吗?

解决方案

依赖遍历程序很长时间没有更新。我认为作者只是放弃了试图跟上Windows开发的步伐。特别要解决的是并行清单清单查找规则,这是一个很难解决的问题。 SetDllDirectory()无法静态解析。对于延迟加载的DLL不太聪明,对于作为转发器的DLL导出一无所知。您几乎总会得到一大堆实际上并没有丢失的DLL。



在64位操作系统上使用32位版本也无法正常工作,这可能是msvcr100d.dll的错误。对于32位可执行文件,必须将其复制到c:\windows\syswow64,而不是system32中。您真的想支持msvcrt 10及更高版本的本地部署。换句话说,只需将DLL复制到与EXE相同的目录中即可。将其放置在Windows系统目录中会使您暴露出太多的DLL Hell,这远远超出了选择错误的系统目录的可能性。工具。它生成的跟踪将向您确切显示它在哪里寻找DLL。


I put MSVCR100D.DLL into the c:\windows\system32 folder but dependency walker is still complaining about it being missing. Any ideas?

解决方案

Dependency walker hasn't been updated in a very long time. I think the author just gave up trying to keep up with Windows development. Particularly resolving side-by-side manifest lookup rules is a very hard problem to solve. SetDllDirectory() is impossible to resolve statically. It isn't very smart about delay-loaded DLLs and it doesn't know anything about DLL exports that are forwarders. You almost always get a big list of missing DLLs that are not actually missing.

Using the 32-bit version on a 64-bit operating system does not work well either, your probable mistake in the case of msvcr100d.dll. Which must be copied into c:\windows\syswow64, not system32 for a 32-bit executable. You really want to favor local deployment for msvcrt versions 10 and up. In other words, simply copying the DLL into the same directory as the EXE. Putting it in the Windows system directory exposes you to too much DLL Hell, well beyond picking the wrong system directory.

If you still have trouble then SysInternals' ProcMon is the better tool. The trace it generates shows you exactly where it looked for the DLL.

这篇关于MSVCR100D.DLL和依赖项遍历器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆