【发布时间】:2011-04-21 16:02:34
【问题描述】:
为什么 Windows 在调用 LoadLibrary 时不需要完整的文件路径,或者对于带有已注册 DLL 的 CLSID 等。在什么情况下,人们不得不依靠 DLL 搜索顺序来查找 dll 会从中受益?
我的意思是,诸如 %SystemRoot% 或 %ProgramFiles% 之类的变量可以将您带到适当的文件夹,而 .\ 会将您留在当前目录中。那么为什么要允许含糊不清呢?
【问题讨论】:
-
这可能要追溯到 DOS 支持目录之前的日子。更实际地说,如果您必须在某处指定完整路径,隐式链接将如何工作?
-
隐式链接,很公平。我没有考虑到这一点。我可以看到,跟踪哪个目录中需要的内容很痛苦。
-
您也不知道用户系统上可能存在特定 dll 的位置。对于系统 dll,清单将确保使用正确的版本,而不管它实际存储在哪里。
标签: windows dllimport dll loadlibrary