我的代码使用LoadLibraryA(“someDLL.dll”);它开始搜索someDLL.dll文件的路径是什么?还有一个问题:LoadLibraryA函数区分大小写吗?我的意思是如果我有SomeDLL.dll它会加载它吗?
答案 0 :(得分:3)
MSDN Library文章Dynamic-Link Library Search Order指定启用 SafeDllSearchMode 时桌面应用程序的搜索顺序,这是从Windows XP SP2开始的默认选项:
- 加载应用程序的目录。
- 系统目录。使用GetSystemDirectory函数获取此目录的路径。
- 16位系统目录。没有函数可以获取此目录的路径,但会搜索它。
- Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
- 当前目录。
- PATH环境变量中列出的目录。请注意,这不包括App Paths注册表项指定的每个应用程序路径。计算DLL搜索路径时不使用App Paths键。
醇>
答案 1 :(得分:2)
LoadlLibrary
文章在备注中指定了搜索顺序:
如果lpFileName不包含路径且有多个路径 加载模块具有相同的基本名称和扩展名,功能 返回首先加载的模块的句柄。
如果lpFileName参数中未指定文件扩展名, 附加了默认的库扩展名.dll。但是,文件名 string可以包含一个尾随字符(。)来表示 模块名称没有扩展名。如果未指定路径,则为该函数 搜索基本名称与基本名称匹配的已加载模块 要加载的模块。如果名称匹配,则加载成功。 否则,该函数搜索该文件。 [...]
有关DLL搜索顺序的详细信息,请参阅Dynamic-Link Library Search Order。
文件名不区分大小写,因此NTFS和FAT文件名是。 fundamental rule不假设区分大小写:
命名约定
以下基本规则使应用程序能够创建和处理文件和目录的有效名称,而不管文件系统如何:[...]
不要假设区分大小写。