分享方式:


/DELAY (延遲載入設定)

鏈接器選項,可控制在運行時間延遲載入 DLL。

語法

/DELAY:UNLOAD
/DELAY:NOBIND

備註

選項 /DELAY 可控制 DLL 延遲載入

  • /DELAY:UNLOAD 限定詞會告知延遲載入 Helper 函式,支援明確卸載 DLL。 匯入位址表 (IAT) 會重設為其原始形式,這會使 IAT 指標失效,並導致它們被覆寫。

    如果您未選取 /DELAY:UNLOAD,則對的任何呼叫 __FUnloadDelayLoadedDLL 都會失敗。

  • 限定 /DELAY:NOBIND 符會告知連結器不要在最終影像中包含可系結的 IAT。 預設會是針對延遲載入 DLL 建立可繫結 IAT。 產生的影像無法以靜態方式系結。 (具有可系結 IAT 的影像可能會在執行前以靜態方式系結。如需詳細資訊,請參閱 /BIND

    如果 DLL 已繫結,協助程式函式會嘗試使用系結資訊,而不是在每個參考的匯入上呼叫 GetProcAddress 。 如果時間戳或慣用位址不符合載入 DLL 中的時間戳,協助程式函式會假設系結的 IAT 已過期。 它會繼續,就像系結的 IAT 不存在一樣。

    /DELAY:NOBIND 會使程式映像變大,但可以加快 DLL 的載入時間。 如果您從未想要系結 DLL, /DELAY:NOBIND 可防止產生系結的 IAT。

若要指定要延遲載入的 DLL,請使用 /DELAYLOAD 選項。

在 Visual Studio 開發環境中設定這個連結器選項

  1. 開啟專案的 [ 屬性頁 ] 對話框。 如需詳細資訊,請參閱 設定編譯程式和建置屬性

  2. 選取 [組態屬性>] 連結器>[進階] 屬性頁。

  3. 修改 Unload 延遲載入 DLL 屬性或 Unbind 延遲載入 DLL 屬性。 選擇 [確定] 或 [套用] 以儲存變更。

若要以程式設計方式設定這個連結器選項

另請參閱

MSVC 連結器參考
MSVC 連結器選項