如何在不使用DLL的情况下运行没有依赖DLL?

时间:2012-02-02 10:56:37

标签: c++ windows

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

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

我想知道,我该如何解决这个限制。我希望应用程序只有在真正需要上述DLL时才会崩溃。

请忽略这个问题,当应用程序成功启动后崩溃时它是否很好 - 我会照顾它。

如何在实际需要加载DLL之前推迟DLL解析?

感谢。

1 个答案:

答案 0 :(得分:3)

请参阅/DELAYLOAD linker option

  

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

     

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

     

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

     

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