LoadLibrary 和 AfxLoadLibrary

更新:2007 年 11 月

进程调用 LoadLibrary(或 AfxLoadLibrary)以显式链接到 DLL。如果成功,函数将指定的 DLL 映射到调用进程的地址空间中并返回此 DLL 的句柄,该句柄可与用于显式链接的其他函数(如 GetProcAddressFreeLibrary)一起使用。

LoadLibrary 尝试使用用于隐式链接的同一搜索序列来定位 DLL。如果系统无法找到 DLL 或者入口点函数返回 FALSE,LoadLibrary 将返回 NULL。如果对 LoadLibrary 的调用所指定的 DLL 模块已映射到调用进程的地址空间中,则函数仅返回 DLL 的句柄并递增模块的引用数。

如果 DLL 有入口点函数,则操作系统在调用 LoadLibrary 的进程上下文中调用此函数。如果由于以前调用了 LoadLibrary 但没有相应地调用 FreeLibrary 函数而导致 DLL 已经附加到进程,则不会调用此入口点函数。

加载扩展 DLL 的 MFC 应用程序应使用 AfxLoadLibrary,而不应使用 LoadLibraryAfxLoadLibrary 在调用 LoadLibrary 之前将处理线程同步。AfxLoadLibrary 的接口(函数原型)与 LoadLibrary 相同。

如果出于某种原因 Windows 无法加载 DLL,进程可以尝试从错误恢复。例如,进程可通知用户所发生的错误,并让用户指定 DLL 的其他路径。

安全说明:

如果代码要在 Windows NT 4、Windows 2000 或 Windows XP(SP1 以前的版本)下运行,则请确保为所有 DLL 指定完整路径名。在这些操作系统中,加载文件时会首先搜索当前目录。如果没有限定文件的路径,则可能会加载没有计划加载的文件。

您希望做什么?

您想进一步了解什么?

请参见

概念

DLL