/DELAY(延迟加载导入设置)

/DELAY:UNLOAD
/DELAY:NOBIND

备注

/DELAY 选项控制 DLL 的延迟加载

  • UNLOAD 限定符通知延迟加载 Helper 函数支持 DLL 的显式卸载。 导入地址表 (IAT) 被重置为其原始形式,使 IAT 指针无效并导致它们被覆盖。

    如果不选择 UNLOAD,任何 FUnloadDelayLoadedDLL 调用都将失败。

  • NOBIND 限定符通知链接器不要在最终图像中包含可绑定的 IAT。 默认值是为延迟加载的 DLL 创建可绑定的 IAT。 无法静态绑定结果图像。 (可以在执行之前静态绑定包含可绑定 IAT 的图像。)请参见 /BIND

    如果绑定了 DLL,则 Helper 函数将尝试使用绑定信息,而不是对每个引用的导入调用 GetProcAddress。 如果时间戳或首选地址与加载的 DLL 的时间戳或首选地址不匹配,则 Helper 函数将假定绑定的 IAT 已经过期并继续执行,就像绑定的 IAT 不存在一样。

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

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

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

  1. 打开该项目的**“属性页”**对话框。 有关详细信息,请参见设置 Visual C++ 项目属性

  2. 单击“链接器”文件夹。

  3. 单击“高级”属性页。

  4. 修改“延迟加载的 DLL”属性。

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

请参见

参考

设置链接器选项

链接器选项