| Предыдущий | Следующий |
| ERROR_DEBUGGER_INACTIVE | ERROR_VDM_DISALLOWED |
ERROR_DELAY_LOAD_FAILED
Что означает ERROR_DELAY_LOAD_FAILED
ERROR_DELAY_LOAD_FAILED (decimal 1285, 0x00000505) — не удалось отложенно загрузить DLL или получить адрес функции из DLL с отложенной загрузкой.
Что проверить
Зафиксируйте DLL и импорт, который загрузчик пытался разрешить при delay-load.
- Проверьте фактический путь загруженной DLL, её архитектуру и наличие требуемой функции/порядкового номера экспорта.
- Если используется delay-load failure hook, сохраните исходную ошибку загрузчика до того, как обработчик преобразует её в общий код.
Практический смысл и диагностика
- Не удалось delay-load требуемую DLL либо получить адрес функции из DLL, загружаемой по требованию.
- Линкер Visual C++ поддерживает отложенную загрузку DLL, поэтому приложению не обязательно вручную реализовывать её через LoadLibrary и GetProcAddress.
- При /DELAYLOAD helper-функция загружает DLL при первом фактическом обращении к импортированной функции и разрешает её адрес через LoadLibrary/GetProcAddress. Ошибка может возникнуть именно в этот момент, а не при старте процесса.
- При delayed imports таблица импорта сначала содержит адреса специальных delay-load helper/thunk, которые заменяются реальными адресами импортов при первом вызове. Поэтому проверяйте наличие DLL, зависимостей, экспортируемого имени/ordinal и путь поиска именно в runtime-окружении.
- Не путайте delayed imports с bound imports: bound-адреса вычисляются линкером для конкретной версии DLL. При диагностике delay-load важны фактическая загруженная DLL и результат разрешения нужного экспорта в момент первого обращения.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.