链接器的延迟加载 DLL 支持

Visual C++ 链接器现在支持 DLL 的延迟加载。 这使您不必再用 Windows SDK 函数 LoadLibraryGetProcAddress 来实现 DLL 延迟加载。

在 Visual C++ 6.0 版之前,在运行时加载 DLL 的唯一办法是使用 LoadLibraryGetProcAddress 函数;当使用操作系统的可执行文件或 DLL 被加载之后,操作系统才加载 DLL。

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

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

在下列情况下,应考虑延迟加载 DLL:

  • 程序可能不调用 DLL 中的函数。

  • 可能直到程序执行后期才调用 DLL 中的函数。

可在 .EXE 或 .DLL 项目生成过程中指定延迟加载 DLL。 延迟加载一个或多个 DLL 的 DLL 项目本身不应调用 Dllmain 中的延迟加载入口点。

下列主题描述延迟加载 DLL:

请参见

概念

DLL

链接