延遲載入 DLL 的連結器支援
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 中的函式為止。
應用程式可以使用 /DELAYLOAD (延遲載入匯入) 的連結器選項和 Helper 函式 (Visual C++ 所提供的預設實作環境) 延遲載入 DLL。 Helper 函式將在執行階段時呼叫 LoadLibrary 和 GetProcAddress 來載入 DLL。
下列情形時,您應該考慮延遲載入 DLL:
程式可能不會呼叫在 DLL 中的函式
可能要等到程式執行的後期才會呼叫 DLL 中的函式
建置 .EXE 或 .DLL 專案時,可以指定延遲載入 DLL。 延遲載入一或多個 DLL 的 .DLL 專案不應該自己呼叫 DllMain 中的延遲載入進入點 (Entry Point)。
下列主題說明延遲載入 DLL: