如何在依赖 DLL 中捕获丢失的 DLL?
例如:应用程序正在加载一个 DLL A。
DLL A 正在加载 DLL B。
因此,如果 DLL B 不可用,应用程序只会显示:找不到 DLL A。
有什么提示可以找到解决方案吗?
目前我使用dependency-walker来解决这个问题,但我需要在应用程序内部做一些事情,这样客户就不能在缺少DLL时启动外部工具。
如何在依赖 DLL 中捕获丢失的 DLL?
例如:应用程序正在加载一个 DLL A。
DLL A 正在加载 DLL B。
因此,如果 DLL B 不可用,应用程序只会显示:找不到 DLL A。
有什么提示可以找到解决方案吗?
目前我使用dependency-walker来解决这个问题,但我需要在应用程序内部做一些事情,这样客户就不能在缺少DLL时启动外部工具。
我不完全清楚你的用例是什么,但你的应用程序不能在启动“外部工具”之前调用LoadLibrary来检查 DLL 是否可用,如果它失败报告 DLL 丢失了吗?
您可以显式加载 DLL。如果您缺少依赖项,您将收到错误/异常。
也许您可以静态编译 DLL 中的代码,从而消除问题?
如果您正在与“ DLL Hell ”作斗争,您也可以将 DLL 放在文件系统中,这样 Windows 就会加载您想要的 DLL。
您可以解析IAT并实现与 LoadLibrary 使用的算法类似的算法,以检查是否会找到 dll。实现这一点的开始是ImageNtHeader