From 257984adc845acc160e7f7e04e788a54167d4f3b Mon Sep 17 00:00:00 2001 From: "DESKTOP-J5JP3RN\\kanxingyu" <1764726953@qq.com> Date: Fri, 11 Jul 2025 16:15:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=BA=93=E5=92=8C=E9=9D=99=E6=80=81=E5=BA=93=E7=9A=84=E4=BC=98?= =?UTF-8?q?=E7=BC=BA=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/Library.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/Library/Library.md b/Library/Library.md index cf91885..f64c549 100644 --- a/Library/Library.md +++ b/Library/Library.md @@ -11,6 +11,24 @@ - 对**运行时环境控制严格**的系统 - **性能敏感**且**无需热更新**的模块 +**优点** + +独立性:可执行文件包含所有依赖,无需外部库文件,部署简单。 + +性能:函数调用无额外开销(无动态链接加载过程)。 + +兼容性:避免版本冲突(如“DLL Hell”问题)。 + +代码优化:编译器可进行全程序优化(LTO)。 + +**缺点:** + +体积大:相同库代码被多次复制到不同程序,占用磁盘/内存。 + +更新困难:库更新需重新编译所有依赖它的程序。 + +内存浪费:多个进程无法共享同一库的物理内存。 + #### 1.2静态库的生成 第一,创建新项目,选择静态库。 @@ -49,6 +67,26 @@ 动态库(Dynamic Link Library, DLL / Shared Object, SO)是一种**在程序运行时才被加载的代码库**,允许多个程序共享同一份内存中的库副本 +**优点:** + +节省资源:多个进程共享同一库,减少内存/磁盘占用。 + +更新灵活:更新库文件后,所有程序自动使用新版本(需兼容)。 + +模块化:支持插件机制(运行时加载)。 + +热修复:可替换库文件修复问题(无需重编译程序)。 + +**缺点:** + +部署复杂:需确保目标系统存在正确版本的库(依赖管理)。 + +版本冲突:不同程序依赖同一库的不兼容版本(如DLL Hell)。 + +性能损耗:首次加载需地址重定位,轻微运行时开销。 + +安全性:恶意替换库文件可能导致安全隐患。 + #### 2.2动态库的生成 ##### 2.2.1通过导出语句生成