我有一个针对第三方DLL编译的VC ++应用程序(当然使用他们的LIB文件)。
问题是并非每个场景都涉及该DLL的代码,但如果缺少特定的DLL,Windows拒绝启动应用程序。
我想知道,我该如何解决这个限制。我希望应用程序只有在真正需要上述DLL时才会崩溃。
请忽略这个问题,当应用程序成功启动后崩溃时它是否很好 - 我会照顾它。
如何在实际需要加载DLL之前推迟DLL解析?
感谢。
答案 0 :(得分:3)
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。