如何在依赖的DLL中捕获丢失的DLL?
例如:应用程序正在加载DLL A。
DLL A正在加载DLL B。
因此,如果DLL B不可用,应用程序只会显示: DLL A not found。
有什么建议我可以找到解决方案吗?
目前,我使用dependency-walker来解决这个问题,但我需要应用程序内部的一些东西,这样客户就不会在缺少DLL时启动外部工具。
发布于 2011-05-07 02:32:30
我不完全清楚您的用例是什么,但是您的应用程序不能在启动“外部工具”之前调用LoadLibrary来检查DLL是否可用,如果失败则报告DLL丢失吗?
发布于 2011-05-07 04:31:41
您可以显式加载DLL。如果你有一个缺失的依赖项,你会得到一个错误/异常。
也许你可以在DLL中静态编译代码,这样问题就消除了?
如果你正在使用"DLL Hell“,你也可以把DLL放在文件系统中,这样windows就可以加载你想要的DLL了。
发布于 2011-05-07 05:29:45
您可以解析IAT并实现一个algorithm similar with the one used by LoadLibrary来检查是否会找到dll。实现这一点的一个开始是ImageNtHeader
https://stackoverflow.com/questions/5915508
复制相似问题