Dependency Walker:缺少 dll
Posted
技术标签:
【中文标题】Dependency Walker:缺少 dll【英文标题】:Dependency Walker: missing dlls 【发布时间】:2016-07-14 09:45:04 【问题描述】:我一直在尝试使用 Dependency Walker 解决可执行文件的 .dll 依赖关系。目前,我缺少以下形式的 .dll:
API-MS-WIN-XXX
EXT-MS-WIN-XXX
例如:
API-MS-WIN-APPMODEL-IDENTITY-L1-2-0.DLL
API-MS-WIN-APPMODEL-RUNTIME-INTERNAL-L1-1-0.DLL
API-MS-WIN-BASE-UTIL-L1-1-0.DLL
API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL
EXT-MS-WIN-RTCORE-NTUSER-SYSCOLORS-L1-1-0.DLL
有人对如何解决这些问题有任何想法吗? 任何帮助将不胜感激!
其他信息:我使用 Visual Studio 2013 编译了可执行文件。最有趣的是我在编译过程中没有收到任何错误。但是,由于缺少依赖项,我无法运行它。我还附上了一张依赖walker的截图:
更新 1: 作为解决问题的尝试,我尝试将 VS 在编译期间使用的库的路径添加到 $PATH 环境变量中,但没有任何运气(Dependency Walker 仍然显示未解决的依赖项)。
【问题讨论】:
您使用的是什么编译器或 IDE? @kizeloo 非常感谢您的回复!我正在使用 Visual Studio 2013。 【参考方案1】:这些是 API 集 - essentially, an extra level of call indirection 从 Windows 7 开始逐渐引入。依赖项遍历器的开发似乎在此之前很久就停止了,它无法正确处理 API 集。
所以这些都是误报,无需担心。你不会错过任何东西。
另见On API-MS-WIN-XXXXX.DLL, and Other Dependency Walker Glitches。
编辑:直到 2017 年 10 月,才终于有人尝试填补这一空白。认识Dependencies by lucasg。到目前为止,我只是简单地摆弄了一下它,但它很好地处理了 API 集,并且至少非常值得关注。
【讨论】:
优秀的情报! :-)。但这不是“假阳性”而不是“假阴性”吗?只是吹毛求疵,这对我来说是今天最好的新信息。期待测试Dependencies
。谢谢!
好吧,当我的库无法加载 (LoadLibrary) 时,我正在尝试解决问题。我似乎无法弄清楚为什么。其中一些提到的文件甚至不在我的系统上。这仍然是误报吗?
@MartinKosicky 提到的文件甚至不是文件。它们是 Windows 加载器的“虚拟标记” - 并且不应该存在于您的磁盘上。所以这绝对不是你的问题
确实,lucasg 的 Dependencies 删除了错误的“丢失的包”,并显示(在我的情况下)它需要一个不同的 Python 版本。
作为一个阅读速度太快的人,有时将依赖关系的评论移到第一段可能会有所帮助。 “...它无法正确处理 API 集。您可能希望通过 lucasg 尝试 Dependencies 一个应该正确处理这些的较新的依赖项应用程序”【参考方案2】:
除了@Ofek Shilon 所说的之外,当我尝试为我的程序查找丢失的 dll 时,我通常会忽略依赖项步行者识别为丢失的以下 dll。当dependency_walker 说这些dll 丢失时,您会看到您的程序运行良好。
API-MS-WIN-*.dll EXT-MS-WIN-*.dll IESHIMS.dll EMCLIENT.dll DEVICELOCKHELPERS.dll您可以搜索上述以外的dll来解决您的问题。
【讨论】:
【参考方案3】:Dependencies 程序帮助我立即找到了丢失的 DLL。它是开源的,可在此处获得:https://github.com/lucasg/Dependencies
【讨论】:
这已经添加到original answer 还有@Steji 的回答(已删除)。【参考方案4】:我也忽略了:
EFSCORE.DLL WPAXHOLDER.DLL【讨论】:
以上是关于Dependency Walker:缺少 dll的主要内容,如果未能解决你的问题,请参考以下文章
使用Dependency Walker查看dll/so库的依赖关系
使用Dependency Walker和Process Explorer搞定第三方软件release版本发布问题
Dependency Walker 报告 IESHIMS.DLL 和 WER.DLL 丢失?