C 为什么可执行文件比与应用程序项目静态链接的库小?

C 为什么可执行文件比与应用程序项目静态链接的库小?,c,visual-studio,static-linking,C,Visual Studio,Static Linking,我已经在VisualStudio中创建了windows应用程序项目。OpenSSL库(大小:15Mb)与应用程序项目静态链接 但是,应用程序(可执行文件).exe文件的大小仍然只有2 MB 怎么可能呢? 有人能解释一下链接器是如何做到这一点的吗?在链接过程中,链接器只会从应用程序所需的OpenSSL库中选择代码。它将不包括整个OpenSSL库。因此,您的可执行文件可能比库小得多 基本上,静态库只是对象文件的容器。每个对象文件都包含单个编译单元的代码 每个目标文件都包含单个函数的代码嗯,不太可能,

我已经在VisualStudio中创建了windows应用程序项目。OpenSSL库(大小:15Mb)与应用程序项目静态链接

但是,应用程序(可执行文件).exe文件的大小仍然只有2 MB

怎么可能呢?
有人能解释一下链接器是如何做到这一点的吗?

在链接过程中,链接器只会从应用程序所需的OpenSSL库中选择代码。它将不包括整个OpenSSL库。因此,您的可执行文件可能比库小得多


基本上,静态库只是对象文件的容器。每个对象文件都包含单个编译单元的代码

每个目标文件都包含单个函数的代码嗯,不太可能,通常每个目标文件都是单个翻译单元(即.c/.cpp文件)编译的结果。@MatteoItalia:谢谢你指出每个目标中的错误。。。。我已经相应地更新了我的答案。