如何在不使用依赖DLL的情况下运行该DLL

How to run without a dependent DLL when that DLL is not used?

本文关键字:DLL 情况下 运行 依赖      更新时间:2023-10-16

我有一个针对第三方DLL编译的VC++应用程序(当然是使用他们的LIB文件)。

问题是,并不是每个场景都涉及该DLL的代码,但如果缺少特定的DLL,Windows将拒绝启动应用程序。

我想知道,我该如何解决这个限制。我希望只有在确实需要上述DLL的情况下应用程序才会崩溃。

请忽略这个问题,当一个应用程序在成功启动后崩溃时,这是否是一种好的体验-我会处理它。

如何将DLL解析推迟到实际需要加载该DLL?

谢谢。

请参阅/DELAYLOAD链接器选项:

Visual C++链接器现在支持延迟加载DLL。这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载。

在Visual C++6.0之前,在运行时加载DLL的唯一方法是使用LoadLibrary和GetProcAddress;当加载可执行文件或使用该DLL的DLL时,操作系统将加载该DLL。

从Visual C++6.0开始,当与DLL静态链接时,链接器提供了延迟加载DLL的选项,直到程序调用该DLL中的函数。

应用程序可以使用带有辅助函数(Visual C++提供的默认实现)的/DELAYLOAD(延迟加载导入)链接器选项延迟加载DLL。helper函数将在运行时为您调用LoadLibrary和GetProcAddress来加载DLL。

相关文章: