LoadLibrary 和 AfxLoadLibrary

您所在的位置:网站首页 loadlibrary绝对路径 LoadLibrary 和 AfxLoadLibrary

LoadLibrary 和 AfxLoadLibrary

2024-06-13 19:08| 来源: 网络整理| 查看: 265

LoadLibrary 和 AfxLoadLibrary 项目 04/03/2023

进程调用 LoadLibrary 或 LoadLibraryEx 以显式链接到 DLL。 (MFC 应用使用 AfxLoadLibrary 或 AfxLoadLibraryEx。)如果函数执行成功,它会将指定的 DLL 映射到调用进程的地址空间中并返回该 DLL 的句柄。 此句柄可以与其他函数(如 GetProcAddress 和 FreeLibrary)一起在显式链接中使用。 有关详细信息,请参阅显示链接。

LoadLibrary 将尝试使用用于隐式链接的相同搜索顺序来查找 DLL。 LoadLibraryEx 使你可以更好地控制搜索路径顺序。 有关详细信息,请参阅动态链接库搜索顺序。 如果系统找不到 DLL 或如果入口点函数返回 FALSE,则 LoadLibrary 将返回 NULL。 如果对 LoadLibrary 的调用所指定的 DLL 模块已映射到调用进程地址空间中,则该函数将返回 DLL 的句柄并递增模块的引用数。

如果 DLL 具有入口点函数,则操作系统将在调用 LoadLibrary 或 LoadLibraryEx 的线程的上下文中调用此函数。 如果 DLL 已附加到进程中,则不会调用此入口点函数。 此情况是由于以前调用 DLL 的 LoadLibrary 或 LoadLibraryEx 函数时没有相应地调用 FreeLibrary 函数。

对于加载 MFC 扩展 DLL 的 MFC 应用程序,我们建议你使用 AfxLoadLibrary 或 AfxLoadLibraryEx,而不是 LoadLibrary 或 LoadLibraryEx。 MFC 函数会在显示加载 DLL 前处理线程同步。 AfxLoadLibrary 和 AfxLoadLibraryEx 的接口(函数原型)与 LoadLibrary 和 LoadLibraryEx 相同。

如果 Windows 无法加载 DLL,则进程会尝试从错误中恢复。 例如,进程会通知用户所发生的错误,并让用户指定 DLL 的其他路径。

重要

请确保指定任何 DLL 的完整路径。 LoadLibrary 加载文件时可能会首先搜索当前目录。 如果不完全限定文件的路径,则可能会加载一个非目标文件。 创建 DLL 时,请使用 /DEPENDENTLOADFLAG 链接器选项来指定静态链接的 DLL 依赖项的搜索顺序。 在 DLL 中,使用显式加载的依赖项和 LoadLibraryEx 或 AfxLoadLibraryEx 调用参数的完整路径指定模块搜索顺序。 有关详细信息,请参阅动态链接库安全和动态链接库搜索顺序。

你希望做什么?

将可执行文件链接到 DLL

将可执行文件链接到 DLL

你想进一步了解什么?

动态链接库搜索顺序

FreeLibrary 和 AfxFreeLibrary

GetProcAddress

另请参阅 在 Visual Studio 中创建 C/C++ DLL


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3