动态链接库(DLL),其是windows操作系统的基础,其通常不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某项工作的函数。只有在其他模块调用动态链接库中的函数时,它才发挥作用。
Windows API中所有的函数都包含在DLL中,其中有3个重要的DLL。
- Kernel32.dll 它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数;
- User32.dll 它包含那些用于执行用户界面任务(如窗口的创建和消息的传递)的函数,例如CreateWindow函数;
- GDI32.dll 它包含那些用于画图和显示文本的函数
1.静态库和动态库
- 静态库
函数和数据被编译进一个二进制文件(通常扩展名为.LIB,即是静态库),在使用静态库的情况下,在编译链接可执行文件时,链接器将从库中复制这个二进制文件并和程序中其他其他模块最终组合成可执行文件(.EXE文件),当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。
- 动态库
在使用动态链接库,往往提供两个文件:一个引入库(.lib)文件和一个DLL文件(.dll)。虽然引入库文件的后缀名也是“lib”,但是动态链接库文件和静态库文件有着本质的区别,对于DLL文件来说,其引入库文件(.lib)包含DLL导出的函数和变量的符号名,而.dll文件包含实际的函数和数据。在使用动态链接库,编译链接可执行文件时,只需要链接该DLL的引入库文件,该DLL中的函数代码和数据并不复制到可执行文件中,直到可执行程序运行时,才去加载所需要的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数。这时,发布产品时,除了发布可执行文件以外,同时还要发布该程序将要调用的动态链接库。
2.使用动态链接库的好处
- 可以采用多种语言来编写dll。即如用某种语言编写DLL,而用其他语言所编写的可执行程序来调用这些DLL
- 增强产品的功能。、
- 提供二次开发的平台
- 简化项目管理
- 可以节省磁盘空间和内存
- 有助于资源的共享
- 有助于实现应用程序的本地化
PS:参考VC++深入详解
只为训练自己,时刻锤炼一个程序员最基本的技能!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端