news 2026/10/7 9:38:27

Windows 编程基础:动态链接库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 函数,比如 UpdateWindow,CreateWindow,MessageBox,这些个 API 函数,基本上是属于 Windows 的三个子系统之一的。

也就是,我们所学习的 Windows API 函数,基本上是属于 KERNEL32.DLL、USER32.DLL、GDI32.DLL 三者之一。

这样的知识,或许,对你的 Windows 程序的学习,没啥直接的意义。但是呢,我们还是需要去了解。

其实,Windows 的这种设计思路,它对于操作系统的设计,也是有着重大的借鉴意义的。

对于操作系统者来讲,当然可以像 Linux 操作系统那样子,编译整个的操作系统,将整个的代码都给公布出来。不过,Windows 的处理思路,也是值得去借鉴的。

将来,中国的真正意义上的国产操作系统,会是什么样子,我们尚不知道。

不过,在此,积累知识,学习和了解 Linux 与 Windows 的做法,了解 苹果的做法与安卓的做法,我认为,是有意义的。

专栏导航

上一篇:第1章,[Win32 章节]:Windows 简史

回到目录

下一篇:第1章 :第一个 Win32 程序,头文件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 9:37:41

GoPro HERO12免官方App开发实战:BLE配对到Wi-Fi流媒体控制全攻略

最近做了一件有意思的事:不依赖GoPro官方App,直接从零把一台HERO12接进自己的控制链路——先通过蓝牙完成配对、拿到Wi-Fi凭据,再切到Wi-Fi通道走HTTP API控制拍照、录像、切换模式,最后把实时画面通过RTSP/HLS拉到播放器里。整套…

作者头像 李华