链接器的延迟加载 DLL 支持
Visual C++ 链接器现在支持 DLL 的延迟加载。这使您不必再用 Windows SDK 函数 LoadLibrary 和 GetProcAddress 来实现 DLL 延迟加载。
在 Visual C++ 6.0 版之前,在运行时加载 DLL 的唯一办法是使用 LoadLibrary 和 GetProcAddress 函数;当使用操作系统的可执行文件或 DLL 被加载之后,操作系统才加载 DLL。
从 Visual C++ 6.0 开始,与 DLL 静态链接时,链接器提供了一些选项,将 DLL 的加载延迟到程序调用该 DLL 中的函数时才进行。
应用程序可以使用具有 Helper 函数的 /DELAYLOAD(延迟加载导入)链接器选项延迟加载 DLL(Visual C++ 提供的默认实现)。Helper 函数将在运行时通过调用 LoadLibrary 和 GetProcAddress 为您加载 DLL。
在下列情况下,应考虑延迟加载 DLL:
程序可能不调用 DLL 中的函数。
可能直到程序执行后期才调用 DLL 中的函数。
可在 .EXE 或 .DLL 项目生成过程中指定延迟加载 DLL。延迟加载一个或多个 DLL 的 DLL 项目本身不应调用 Dllmain 中的延迟加载入口点。
下列主题描述延迟加载 DLL: