0

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

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

DLL A 正在加载 DLL B。

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

有什么提示可以找到解决方案吗?

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

4

3 回答 3

1

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

于 2011-05-06T18:32:29.593 回答
0

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

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

如果您正在与“ DLL Hell ”作斗争,您也可以将 DLL 放在文件系统中,这样 Windows 就会加载您想要的 DLL。

于 2011-05-06T20:31:40.863 回答
0

您可以解析IAT并实现与 LoadLibrary 使用的算法类似的算法,以检查是否会找到 dll。实现这一点的开始是ImageNtHeader

于 2011-05-06T21:29:44.763 回答