如何在依赖DLL中捕获丢失的DLL?
例如: 应用程序正在加载DLL A.
DLL A正在加载DLL B.
因此,如果DLL B不可用,应用程序只显示:未找到DLL A。
我能找到解决方案的任何提示吗?
目前我使用dependency-walker来解决这个问题,但我需要在应用程序中使用某些东西,这样客户就不能在DLL丢失时启动外部工具。
答案 0 :(得分:1)
我不完全清楚你的用例是什么,但是你的应用程序不能在启动“外部工具”之前调用LoadLibrary来检查DLL是否可用,如果失败则报告DLL(s)丢失了吗?
答案 1 :(得分:0)
您可以显式加载DLL。如果您缺少依赖项,则会收到错误/异常。
也许您可以静态编译DLL中的代码,以解决问题?
如果您正在与“DLL Hell”作斗争,您也可以将DLL放在文件系统中,以便Windows加载您想要的DLL。
答案 2 :(得分:0)
您可以解析IAT并实施algorithm similar with the one used by LoadLibrary以检查是否找到了dll。实现这一目标的开始是ImageNtHeader