1.什么是动态链接库
动态链接库(Dynamic-Link Library)通常包含程序员自定义的变量和函数,可以在运行时动态链接到可执行文件中。自从微软推出 16 位的 Windows 操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows 操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在 GDI DLL 中、显示Windows 桌面和处理用户的输入所需要的代码被存储在一个 User DLL 中,Windows 编程所需要的大量的 API 函数也被包含在 Kernel DLL中。在 Windows 操作系统中使用 DLL 有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个 DLL 文件,真正实现了资源共享,大大缩小了应用程序的执行代码,更加有效的利用了内存;使用 DLL 的另一个优点是 DLL 文件作为一个单独的程序模块,封装性,独立性好,在软 件需要升级的时候,开发人员只需要修改相应的 DLL 文件就可以了,而且当 DLL 中的函数改变后,只要不是参数的改变,程序代码并不需要重新编译。这在编 程时十分有用,大大提高了软件开发和维护的效率。
2.动态库扩展名
Windows下的动态链接库后缀名是.dll
3.Windows系统动态链接库
Windows操作系统核心有三个动态链接库(Kernel32.dll、User32.dll、Gdi32.dll),这些动态链接库构成了Win32 API函数
- user32.dll
是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息 - gdi32.dll
gdi32.dll是Windows GDI图形用户界面相关程序,包含的函数用来绘制图像和显示文字 - kernel32.dll
控制着系统的内存管理、数据的输入输出操作和中断处理
微软就是靠这三个模块起家的
Windows SDK只利用这三个模块就能构建基本的Windows程序。
4.创建一个简单的dll实例
在VS中创建一个新的Win32项目:

项目向导选择:

创建好后,可以看到dllmain.cpp可以看到dll的入口函数dllmain:

函数内部根据dll被加载的原因进行不同的操作:

在Win32Project1.cpp,添加一个函数,如下图所示:

在Win32Project1.h头文件中添加声明,如下图所示:

之后选择编译,这样就成功生成一个简单的dll文件:

网友评论