如果在lpLibFileName指定的字符串内没有扩展名,则把默认的库扩展名DLL追加上。文件名串可以用点(.)结尾,指明该模块没有扩展名。当没有路径指定时,该函数搜索已调入模块,而且其主名与即将调入的模块主名匹配。如果名字匹配,加载成功,否则,函数按照如下顺序搜索。
⑴应用程序加载的目录;
⑵当前目录;
⑶Windows 95 and Windows 98系统目录,用GetSystemDirectory函数得到目录路径;
⑷Windows NT系统目录,用GetSystemDirectory函数得到目录路径,目录名为SYSTEM32;
Windows NT: 16位系统目录,没有函数得到该目录。但它被搜索,目录名是SYSTEM.
Windows目录:该目录是在环境变量内用PATH列出的目录。被搜索的第一个目录是含有用于创建调用进程的映象文件的目录。这样做允许私有DLL文件与已经发现的进程关联,而不必添加进程的已安装目录到环境变量的PAHT里。
Visual C++ 编译器提供允许声明线程局部变量的语法:_declspec(thread).如果在DLL内使用这个语法,你将不能够显式地用LoadLibrary或者LoadLibraryEx函数了.如果你的DLL显式地加载,你必须使用线程局部存储函数,而非_declspec(thread).
Windows 95: 如果用LoadLibrary加载一个包含ID大于0x7FFF资源的模块将失败。
Windows CE: 两个不同的模块不能够使用相同文件名。例如,试图用LoadLibrary加载"Sample.cpl", 操作系统不会加载Sample.cpl, 而是加载的Sample.dll.一个类似的限制存在于使用相同名字但位于不同目录的情况,如:LoadLibrary加载 "\\Windows\Sample.dll",LoadLibrary 加载"\\MyDir\Sample.dll", "\\Windows\Sample.dll" 将被重新加载