/DELAY (параметры отложенной загрузки импортов)
Обновлен: Ноябрь 2007
/DELAY:UNLOAD
/DELAY:NOBIND
Заметки
Параметр /DELAY управляет отложенной загрузкой библиотек DLL:
Квалификатор UNLOAD дает указание вспомогательной функции отложенной загрузки поддерживать явную выгрузку библиотеки DLL. Таблица адресов импорта (IAT) восстанавливается в своем первоначальном виде, что приводит к тому, что указатели IAT делаются недействительными и перезаписываются.
Если квалификатор UNLOAD не указан, то любой вызов FUnloadDelayLoadedDLL завершится с ошибкой.
Квалификатор NOBIND дает компоновщику указание не включать привязываемую таблицу IAT в окончательный образ. По умолчанию проводится создание привязываемой IAT для библиотек DLL с отложенной загрузкой. Полученный в результате образ не может быть статически привязан. (образы с привязываемыми таблицами IAT могут быть статически привязаны перед выполнением). См. раздел /BIND.
Если библиотека DLL привязана, то вспомогательная функция будет пытаться использовать данные привязки вместо вызова функции GetProcAddress для каждого из импортов, на который существует ссылка. Если отметка времени или предпочтительный адрес не соответствуют таковым в загружаемой библиотеке DLL, то вспомогательная функция будет предполагать, что привязанная таблица IAT устарела, и продолжать обработку так, будто привязанной IAT не существует.
Применение квалификатора NOBIND приведет к увеличению образа программы, но зато может уменьшить время загрузки библиотеки DLL. Если привязка библиотеки DLL не предполагалась, то NOBIND предотвратит создание привязанной IAT.
Чтобы задать отложенную загрузку для библиотек DLL, используется параметр /DELAYLOAD.
Установка данного параметра компоновщика в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Установка свойств проекта Visual C++.
Щелкните папку Компоновщик.
Щелкните страницу свойств Дополнительно.
Измените свойство Отложенно загружаемые DLL.
Установка данного параметра компоновщика программным способом
- См. раздел DelayLoadDLLs.