【问题标题】:Catching DLL dependencies in Win32 application在 Win32 应用程序中捕获 DLL 依赖项
【发布时间】:2011-05-06 18:25:58
【问题描述】:

如何在依赖 DLL 中捕获丢失的 DLL?

例如: 应用程序正在加载一个 DLL A。

DLL A 正在加载 DLL B。

因此,如果 DLL B 不可用,应用程序只会显示:找不到 DLL A。

我可以在哪里找到解决方案的任何提示?

目前我使用dependency-walker来解决这个问题,但我需要在应用程序内部做一些事情,这样客户就不能在缺少DLL时启动外部工具。

【问题讨论】:

    标签: c++ winapi dll dependencies dependency-walker


    【解决方案1】:

    我不完全清楚你的用例是什么,但你的应用程序不能在启动“外部工具”之前调用LoadLibrary 来检查 DLL 是否可用,如果失败则报告 DLL( s) 不见了?

    【讨论】:

    【解决方案2】:

    您可以显式加载 DLL。如果您缺少依赖项,您将收到错误/异常。

    也许你可以静态编译DLL中的代码从而消除问题?

    如果您正在使用“DLL Hell”,您也可以将 DLL 放在文件系统中,以便 Windows 加载您想要的 DLL。

    【讨论】:

    • you might also be able to place the DLL's in the file system -- 对不起,你把它们放在哪里else
    【解决方案3】:

    您可以解析IAT 并实现algorithm similar with the one used by LoadLibrary 以检查是否会找到dll。实现这一点的开始是ImageNtHeader

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 2015-06-11
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      相关资源
      最近更新 更多