none
和底层库依赖不匹配的问题Depends是怎么检测出来的呢? RRS feed

  • 问题

  •          经常碰到用Depends打开dll,发现它和底层库不匹配,如下图:

             请教各位大侠,和底层库依赖不匹配的问题Depends是怎么检测出来的呢?


    前无古人,后无来者

    2019年2月15日 3:08

全部回复

  • 你好,

    感谢在MSDN论坛发帖提问。

    >>和底层库依赖不匹配的问题Depends是怎么检测出来的呢

    Dependency Walker可以帮助您解决应用程序错误,文件注册错误,内存访问冲突和无效页面错误。
    如果您的特定程序未加载,或者服务无法以指向特定dll的错误启动。在这种情况下,您可以在Dependency Walker中加载该程序或dll,以查看哪个文件无法加载或导致问题的模块,然后修复它。该程序不仅可以加载模块,还可以扫描潜在的错误。 根据需要帮助的文件,它执行以下工作:
    1、检测丢失的文件。这些是作为另一个模块的依赖项所必需的文件。此问题的症状是“无法在指定的路径中找到动态链接库BAR.DLL ...”错误。
    2、检测无效文件。这包括不符合Win32或Win64的文件以及损坏的文件。此问题的症状是“应用程序或DLL BAR.EXE不是有效的Windows映像”错误。
    3、检测导入/导出不匹配。验证模块导入的所有函数是否实际从依赖模块导出。所有未解决的导入函数都标记有错误。此问题的症状是“过程入口点FOO无法位于动态链接库BAR.DLL中”错误。
    4、检测循环依赖性错误。这是一个非常罕见的错误,但转发功能可能会发生。
    5、检测不匹配的CPU类型的模块。如果为一个CPU构建的模块尝试加载为不同CPU构建的模块,则会发生这种情况。
    6、通过验证模块校验和来检查校验和不一致性,以查看在构建模块之后是否已修改任何模块。
    7、通过突出显示无法在其首选基址加载的任何模块来检测模块冲突。
    8、通过跟踪对模块入口点的调用并查找错误来检测模块初始化失败。
    9、Dependency Walker还可以执行应用程序的运行时配置文件,以检测动态加载的模块和模块初始化失败。从上面检查相同的错误也适用于动态加载的模块。

    Dependency Walker将在错误发生之前注入dwinject.dll,并将记录错误发生时发生的事件。

    Best wishes,

    Jeanine Zhang
    2019年2月15日 6:03
    版主