Путь поиска DLL, как описано в MSDN :
- Каталог, в котором находится исполняемый модуль для текущего процесса.
- Текущийкаталог.
- Системный каталог Windows.Функция GetSystemDirectory извлекает путь к этому каталогу.
- Каталог Windows.Функция GetWindowsDirectory извлекает путь к этому каталогу.
- Каталоги, перечисленные в переменной среды PATH.
Что вызывает следующие сомнения:
Предположим, у меня естьисполняемый файл в некотором каталоге, скажем: c:\execdir\myexe.exe
, и он загружает DLL, найденную в PATH
и расположенную в c:\dlldir\mydll.dll
.Теперь предположим, что mydll.dll
пытается загрузить другую DLL с LoadLibrary
.Какой каталог будет просматриваться первым - c:\dlldir
или c:\execdir
?
Я думаю, что приведенные выше правила поиска говорят, что это будет c:\execdir
, потому что это якобы "каталог, где исполняемый модуль длятекущий процесс находится ", но было бы неплохо получить подтверждение из другого источника.
РЕДАКТИРОВАТЬ: Кроме того, c:\dlldir\
смотрел вообще ?В конце концов, это ни то, где находится .exe, ни «текущий каталог» (если это подразумевается в общем смысле).
PS Меня интересуют как Windows XP, так и 7.