如MSDN所述,DLL查找路径如下:
假设我有一个可执行文件位于某个目录中,例如:
我认为上面引用的查找规则表明将首先查找
编辑: 同样,是否
注:我对Windows XP和7都感兴趣。
- 当前进程所在的可执行模块目录。
- 当前目录。
- Windows系统目录。GetSystemDirectory函数检索此目录的路径。
- Windows目录。GetWindowsDirectory函数检索此目录的路径。
- PATH环境变量中列出的目录。
假设我有一个可执行文件位于某个目录中,例如:
c:\execdir\myexe.exe
,并且它加载了一个在PATH
中找到并位于c:\dlldir\mydll.dll
的DLL。现在,假设mydll.dll
尝试使用LoadLibrary
加载另一个DLL。哪个目录会首先被查找 - c:\dlldir
还是c:\execdir
?我认为上面引用的查找规则表明将首先查找
c:\execdir
,因为那里是“当前进程的可执行模块所在的目录”,但很好从另一个来源获得确认。编辑: 同样,是否
c:\dlldir\
也被考虑?毕竟,它既不是.exe所在的位置,也不是“当前目录”(如果一般来讲)。注:我对Windows XP和7都感兴趣。