如MSDN中所述,DLL 查找路径为:
- 当前进程的可执行模块所在的目录。
- 当前目录。
- Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。
- Windows 目录。GetWindowsDirectory 函数检索此目录的路径。
- PATH 环境变量中列出的目录。
这带来了以下疑问:
假设我在某个目录中有一个可执行文件,例如:c:\execdir\myexe.exe
它加载了一个 DLL,该 DLLPATH
位于c:\dlldir\mydll.dll
. 现在,假设mydll.dll
尝试使用LoadLibrary
. 首先将查看哪个目录 -c:\dlldir
或c:\execdir
?
我认为上面引用的查找规则说这将是c:\execdir
因为据称这是“当前进程的可执行模块所在的目录”,但最好从另一个来源获得确认。
编辑:另外,被c:\dlldir\
看了吗?毕竟,它既不是 .exe 所在的位置,也不是“当前目录”(如果这是一般意义上的意思)。
PS我对Windows XP和7都感兴趣。