/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 开发环境中设置此链接器选项
打开该项目的**“属性页”**对话框。 有关详细信息,请参见设置 Visual C++ 项目属性。
单击“链接器”文件夹。
单击“高级”属性页。
修改“延迟加载的 DLL”属性。
以编程方式设置此链接器选项
- 请参见 DelayLoadDLLs。