动态链接库 (DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。
动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。
使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。
下列主题提供有关对 DLL 编程的详细信息。
本节内容
-
应用程序和 DLL 之间的差异
-
描述应用程序和 DLL 之间的基本差异。
-
使用 DLL 的优点
-
描述动态链接的优点。
-
Win16 DLL 与 Win32 DLL 之间的差异
-
描述 Win16 DLL 和 Win32 DLL 之间的更改。
-
DLL 常见问题
-
提供有关 DLL 的常见问题解答。
-
将可执行文件链接到 DLL
-
描述与 DLL 的显式链接和隐式链接。
-
初始化 DLL
-
讨论当 DLL 加载时必须执行的 DLL 初始化代码(如分配内存)。
-
运行时库行为
-
描述运行时库如何执行 DLL 启动序列。
-
LoadLibrary 和 AfxLoadLibrary
-
讨论如何使用 LoadLibrary 和 AfxLoadLibrary 显式链接到 DLL。
-
GetProcAddress
-
讨论如何使用 GetProcAddress 获取 DLL 中导出函数的地址。
-
FreeLibrary 和 AfxFreeLibrary
-
讨论当不再需要 DLL 模块时如何使用 FreeLibrary 和 AfxFreeLibrary。
-
Windows 用来定位 DLL 的搜索路径
-
描述 Windows 操作系统用来定位系统上的 DLL 的搜索路径。
-
动态链接到 MFC 的规则 DLL 的模块状态
-
描述动态链接到 MFC 的规则 DLL 的模块状态。
-
扩展 DLL
-
解释通常实现从现有 Microsoft 基础类库类派生的可重用类的 DLL。
-
创建纯资源 DLL
-
讨论只包含资源(如图标、位图、字符串和对话框等)的纯资源 DLL。
-
MFC 应用程序中的本地化资源:附属 DLL
-
提供对附属 DLL 的增强支持,该功能有助于创建针对多种语言进行本地化的应用程序。
-
导入和导出
-
描述如何将公共符号导入应用程序或从 DLL 导出函数。
-
Active 技术和 DLL
-
使对象服务器得以在 DLL 内完全实现。
-
DLL 中的自动化
-
描述“MFC DLL 向导”中的“自动化”选项提供的内容。
-
MFC DLL 命名约定
-
讨论 MFC 中包含的 DLL 和库如何遵循结构化命名约定。
-
从 Visual Basic 应用程序调用 DLL 函数
-
描述如何从 Visual Basic 应用程序中调用 DLL 函数。
相关章节
-
将 MFC 作为 DLL 的一部分使用
-
描述规则 DLL,它使您可以将 MFC 库作为 Windows 动态链接库的一部分来使用。
-
MFC 的 DLL 版本
-
描述如何将 MFCxx.dll 和 MFCxxD.dll(其中 x 是 MFC 版本号)共享动态链接库用于 MFC 应用程序和扩展 DLL。
-
添加功能
-
提供有关下列内容的主题链接:描述有关 Visual C++ 库的概念信息和讨论各种编码技术和方法。