静态库和动态库之间有什么区别

时间:2013-11-26 22:30:36

标签: c dynamic static

在C语言中,静态库和动态库之间有什么区别?

2 个答案:

答案 0 :(得分:46)

这个概念可能有点过于宽泛而无法解释,但我会尝试给你一个基本的想法,你可以从中进一步研究。

首先,您需要知道库是什么。基本上,库是函数的集合。您可能已经注意到我们正在使用未在我们的代码中或在该特定文件中定义的函数。要访问它们,我们包含一个头文件,其中包含这些函数的声明。编译之后,有一个名为链接的进程,它将这些函数声明与它们的定义联系起来,这些声明位于另一个文件中。结果是实际的可执行文件。

现在,我所描述的链接是静态链接。这意味着每个可执行文件都包含它所需的每个库(函数集合)。这是浪费空间,因为有许多程序可能需要相同的功能。在这种情况下,在内存中会有更多相同功能的副本。动态链接通过在运行时链接而不是在编译时进行链接来防止这种情况。这意味着所有函数都在一个特殊的内存空间中,每个程序都可以访问它们,而不需要多个副本。这减少了所需的内存量。

正如我在回答的开头所提到的,这是一个非常简化的摘要,可以让您基本了解。我强烈建议你更多地研究这个话题。

答案 1 :(得分:2)

在Windows中:

静态库是一个.lib文件,它将在您的可执行文件中链接,不会随着时间而改变。

动态库是一个链接到您的可执行文件的.dll文件,可能会根据您执行时加载的dll文件而改变。