当前位置: 首页 > news >正文

C#基础(⑥动态链接库DLL)

DLL 是封装好的「功能集合」
它不只是单个方法,通常包含多个类、函数、资源(如图标、字符串)等,形成一个完整的功能模块。例如一个处理 Excel 的 DLL,可能包含「读取表格」「写入数据」「设置样式」等一系列相关功能。
是否能看到源码,取决于是否开源
大部分商业 DLL 或系统 DLL:看不到源码(比如 Windows 自带的kernel32.dll、某些付费 SDK 的 DLL),它们以二进制形式发布,只能通过文档知道如何调用。
开源项目的 DLL:如果作者开源了代码(如Newtonsoft.Json.dll的源码在 GitHub 上可查),则能看到实现逻辑,只是使用时依然以编译后的 DLL 形式引用。

就像你用手机 APP 时,不需要知道 APP 的代码怎么写,只要会按按钮用功能就行 ——DLL 的核心价值就是「隐藏复杂实现,只暴露简单的调用接口」,让开发者专注于自己的业务逻辑。


动态链接库(DLL)是 Windows 系统及基于.NET 等框架开发中广泛使用的文件格式,用于封装可重用的代码、资源和功能,供多个程序共享调用。以下从系统级 DLL.NET 框架核心 DLL第三方常用 DLL三个维度,介绍常见的 DLL 及其功能,帮助你理解它们的作用:

一、系统级 DLL(Windows 自带,底层功能支持)

这些 DLL 由 Windows 系统提供,支撑操作系统的核心功能,可被各种编程语言(包括 C#)调用,实现与系统交互。

DLL 文件名主要功能应用场景举例
kernel32.dll操作系统核心功能:内存管理、进程 / 线程控制、文件操作、时间函数等。用 C# 调用 CreateFile 函数操作文件句柄,或通过 Sleep 函数实现程序延迟。
user32.dll用户界面相关:窗口创建、消息处理、键盘鼠标输入、菜单 / 对话框管理等。调用 MessageBox 显示系统级弹窗,或 SetWindowText 动态修改窗口标题。
gdi32.dll图形设备接口:绘图、字体管理、图像渲染、打印等。绘制图形、处理字体样式,或实现自定义控件的视觉效果。
advapi32.dll高级 Windows API:安全认证、注册表操作、服务管理等。读写 Windows 注册表,或验证用户权限(如管理员身份)。
ole32.dllOLE(对象链接与嵌入)技术:组件对象模型(COM)交互、剪贴板、拖放功能等。实现程序间的数据拖放,或调用 COM 组件(如 Excel 自动化)。

二、.NET 框架核心 DLL(C# 开发的基础依赖)

.NET 框架(包括.NET Framework、.NET Core/.NET 5+)的核心功能通过一系列 DLL 封装,是 C# 开发的基础。

DLL 文件名所属框架 / 版本主要功能
mscorlib.dll.NET Framework包含.NET 的核心类型(如 intstring)、基础类(ObjectArray)、异常处理、垃圾回收机制等,是所有.NET 程序的必依赖。
System.dll.NET Framework提供系统级功能:字符串处理(String)、集合类(List<T>)、IO 操作(File)、XML 处理等。
System.Core.dll.NET Framework 3.5+引入 LINQ(IEnumerable<T>)、Lambda 表达式支持、泛型高级功能,是 C# 3.0 + 语法的核心依赖。
System.Runtime.dll.NET Core/.NET 5+替代.NET Framework 的 mscorlib.dll,包含.NET Core 的基础类型和运行时功能,适配跨平台(Windows、Linux、macOS)。
System.Data.dll所有.NET 版本数据访问功能:数据库连接(SqlConnection)、数据读取(DataReader)、数据集(DataSet)等,支持 SQL Server 等数据库操作。
System.Windows.Forms.dll.NET FrameworkWindows 窗体应用(WinForms)的核心:窗体(Form)、控件(ButtonTextBox)、事件处理等,用于开发桌面 GUI 程序。
PresentationFramework.dll.NET Framework/WPFWPF(Windows Presentation Foundation)的核心:XAML 解析、界面渲染、数据绑定等,用于开发更现代化的桌面应用。

三、第三方常用 DLL(扩展功能,提高开发效率)

开发者或厂商提供的 DLL,封装了特定领域的功能,可直接引用以避免重复开发。

典型 DLL / 库名称开发者 / 来源主要功能应用场景
Newtonsoft.Json.dllJames Newton-KingJSON 序列化与反序列化(将对象转为 JSON 字符串,或反之)。接口数据传输(如 WebAPI 交互)、配置文件读写(JSON 格式)。
NLog.dll/log4net.dll开源社区日志记录工具:支持输出日志到文件、数据库、控制台,可配置日志级别(DEBUG/INFO/ERROR)。程序调试、错误追踪(如记录用户操作日志、系统异常信息)。
MathNet.Numerics.dllMathNet 开源项目数学计算库:线性代数、微积分、统计分析、傅里叶变换等高级数学运算。科学计算、数据分析、工程模拟等场景。
EPPlus.dll开源社区Excel 文件操作(.xlsx 格式):读取、写入、修改 Excel 表格,支持公式、样式设置。批量生成报表、导入导出 Excel 数据(如财务数据统计)。
RestSharp.dll开源社区HTTP 客户端工具:简化 RESTful API 调用,支持 GET/POST 请求、参数传递、响应处理。调用第三方接口(如支付接口、天气 API)、开发爬虫获取网页数据。
OpenCvSharp.dll基于 OpenCV 的 C# 封装计算机视觉库:图像识别、人脸识别、边缘检测、视频处理等。开发安防监控系统、图像编辑工具、AR 应用等。

http://www.dtcms.com/a/363936.html

相关文章:

  • Python 中将 JSON 字符串转为对象的几种方法对比
  • (五)Python控制结构(循环结构)
  • 最快的 C 语言 JSON 库 - yyjson
  • 爬虫-----最全的爬虫库介绍(一篇文章让你成为爬虫大佬,爬你想爬)
  • 【鸿蒙心迹】从疑惑到热爱:我的鸿蒙开发启蒙
  • Java消息中间件(RocketMQ)
  • Linux 文本处理实战手册
  • 【专栏升级】大模型应用实战并收录RAG专题,Agent专题,LLM重构数据科学流程专题,端侧AI专题,累计63篇文章
  • Redis 哨兵 (基于 Docker)
  • YOLO 目标检测:YOLOv5网络结构、Focus、CSP、自适应Anchor、激活函数SiLU、SPPF、C3
  • 3.2-C++基础组件
  • Kafka面试精讲 Day 5:Broker集群管理与协调机制
  • 深度学习-----通过本地数据实现图片识别的训练
  • PS痕迹检测器:基于深度学习的图像篡改检测
  • 撤销修改 情况⼀:对于⼯作区的代码,还没有 add
  • 浏览器内存 (JavaScript运行时内存)存储的优劣分析
  • linux(cut,sort,uniq ,tr,sed,awk)命令介绍
  • 贝叶斯定理:理解概率更新与实际场景应用
  • 在VS Code中直接操控浏览器
  • 预算紧张?这5款低代码平台免费还好用!
  • 光储充一体化智慧能源平台助力某能投公司绿色能源转型
  • 【面试场景题】如何理解设计模式
  • three.js手机端的4种旋转方式
  • 有鹿巡扫机器人:智慧清洁时代的多面手
  • (四)Python控制结构(条件结构)
  • MMORPG 游戏战斗系统架构
  • 2025互联网大厂Java后端面试:3-5年经验必问核心考点解析
  • 机器学习辅助的Backtrader资产配置优化策略
  • 【vue2】vue2.7x的项目中集成tailwind.css真的不要太香
  • Python 类的方法类型详解