小编典典

DLL 和 LIB 文件 - 什么以及为什么?

all

我对 DLL 和 LIB 知之甚少,除了它们包含程序正常运行所需的重要代码 -
库。但是为什么编译器会生成它们呢?将所有代码包含在一个可执行文件中不是更容易吗?DLL 和 LIB 之间有什么区别?


阅读 20

收藏
2022-05-13

共1个答案

小编典典

有静态库 (LIB) 和动态库 (DLL) - 但请注意,.LIB 文件可以是静态库(包含目标文件)或导入库(包含允许链接器链接到 DLL 的符号)。

使用库是因为您可能拥有要在许多程序中使用的代码。例如,如果您编写一个计算字符串中字符数的函数,该函数将在许多程序中很有用。一旦你让那个函数正常工作,你就不想每次使用它时都重新编译代码,所以你把那个函数的可执行代码放在一个库中,链接器可以提取编译后的代码并将其插入你的程序.
出于这个原因,静态库有时被称为“档案”。

动态库更进一步。让库函数的多个副本在每个程序中占用空间似乎很浪费。为什么他们不能都共享该功能的一份副本?这就是动态库的用途。与其在编译时将库代码构建到程序中,不如在加载到内存时将其映射到程序中来运行它。同时运行的多个程序使用相同的功能可以共享一份,节省内存。实际上,您可以仅根据需要加载动态库,具体取决于代码的路径。如果您不进行任何打印,那么让打印机例程占用内存毫无意义。另一方面,这意味着您必须在运行程序的每台机器上安装动态库的副本。

例如,几乎每个用“C”编写的程序都需要来自称为“C 运行时库”的库中的函数,尽管很少有程序需要所有函数。C
运行时有静态和动态两种版本,因此您可以根据特定需求确定程序使用的版本。

2022-05-13