/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,则 helper 函数会尝试使用绑定信息,而不是对每个引用的导入调用 GetProcAddress。 如果时间戳或首选地址与加载的 DLL 中的时间戳或首选地址不匹配,则 helper 函数会假定绑定的 IAT 已经过期。 它继续执行,就像绑定的 IAT 不存在一样。

    /DELAY:NOBIND 导致程序图像比较大,但是可以加快 DLL 的加载时间。 如果从不打算绑定 DLL,则 /DELAY:NOBIND 将禁止生成绑定的 IAT。

若要指定 DLL 延迟加载,请使用 /DELAYLOAD 选项。

在 Visual Studio 开发环境中设置此链接器选项

  1. 打开项目的“属性页”对话框。 有关详细信息,请参阅设置编译器和生成属性

  2. 选择“配置属性”>“链接器”>“高级”属性页

  3. 修改卸载延迟加载的 DLL 属性或解除绑定延迟加载的 DLL 属性。 选择“确定”或“应用”以保存更改。

以编程方式设置此链接器选项

另请参阅

MSVC 链接器参考
MSVC 链接器选项