ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows 编程基础:动态链接库

Windows 编程基础:动态链接库 专栏导航上一篇第1章[Win32 章节]Windows 简史回到目录下一篇第1章 第一个 Win32 程序头文件本节前言对于本节所讲解的知识有可能你会需要时不时地参考本专栏的其它文章。真的遇到了需要参考之前的文章的知识点请你自行查阅。我呢也会提到一部分的参考课节。但是呢你不应该依赖于我的主动提及。最好呢你自己能够多去了解和查看本专栏目录。本节我们讲解的是 Windows 的动态链接库。这可以说是一个很重要的基础知识但也可能是一个你在初次接触的时候会觉得非常无聊的基础知识。本节我基本上还是在抄录佩措尔德的教材。一. 动态链接库Windows 工作原理的中心思想就是 “动态链接” 的概念。Windows 自身带有一大套函数应用程序就是通过调用这些函数来实现它的用户界面和在屏幕上显示文本与图形的。这些函数都是在动态链接库里实现的。这些文件的名称都带有后缀 .DLL 或者 .EXE 。早期的 Windows 系统大部分只是实现了三个动态链接库。它们分别代表了 Windows 的三个主要的子系统内核用户和 GDI 。内核英文为 kernel 。在 32 位 Windows 时代关于内核模块的动态链接库主要是在 KERNEL32.DLL 中实现。内核模块主要用来负责操作系统的传统工作包含内存管理、文件输入/输出以及任务管理呢如果以后我们有机会向大家讲解 Linux 内核的话那么大家也是会接触到内存管理、文件输入/输出和任务管理的。用户英文为 user 。在 32 位 Windows 时代关于用户模块的动态链接库主要是在 USER32.DLL 里面来实现。用户模块它负责所有的窗口管理包括消息、菜单、光标、图标、计时器以及其他与控制窗口显示相关的一些功能。GDI展开来是 Graphics Device Interface中文含义是图形设备接口。在 32 位 Windows 时代关于 GDI 模块的动态链接库主要是在 GDI32.DLL 里面来实现。GDI 模块主要负责在显示器或打印机上显示文本和图形它提供图形设备接口管理用户界面和图形绘制包括 Windows 元文件、位图、设备环境和字体等。当 Windows 程序运行时它通过一个叫做 “动态链接” 的进程与 Windows 接口。每个 Windows 的 EXE 文件包含它所要用的各个动态链接库以及库中的函数引用地址。当一个 Windows 程序被装入内存之后程序中的函数调用都被解析成 DLL 函数入口的指针同时这些被调用的函数也被装入内存如果内存中还没有的话。当链接 Windows 程序一生成执行文件时一定得链接你的编程环境所提供的特殊的 “导入库”import library。这些导入库包含所有 Windows 函数调用要碰到的动态链接库的名字及引用信息链接程序利用这些信息构建 EXE 文件中的表格。当装入程序的时候Windows 要靠这些表格来解析 Windows 函数调用。二. 为啥要学习本节上一分节中所述的枯燥无聊的东西为啥要去学习因为在学习 Windows 程序设计的时候我们会用到很多很多的 Windows API 函数比如 UpdateWindowCreateWindowMessageBox这些个 API 函数基本上是属于 Windows 的三个子系统之一的。也就是我们所学习的 Windows API 函数基本上是属于 KERNEL32.DLL、USER32.DLL、GDI32.DLL 三者之一。这样的知识或许对你的 Windows 程序的学习没啥直接的意义。但是呢我们还是需要去了解。其实Windows 的这种设计思路它对于操作系统的设计也是有着重大的借鉴意义的。对于操作系统者来讲当然可以像 Linux 操作系统那样子编译整个的操作系统将整个的代码都给公布出来。不过Windows 的处理思路也是值得去借鉴的。将来中国的真正意义上的国产操作系统会是什么样子我们尚不知道。不过在此积累知识学习和了解 Linux 与 Windows 的做法了解 苹果的做法与安卓的做法我认为是有意义的。专栏导航上一篇第1章[Win32 章节]Windows 简史回到目录下一篇第1章 第一个 Win32 程序头文件
返回列表