项目依赖C++的二进制概述

Binary overview of project dependency C++

在使用 MSVC 时,使一个项目(A,exe)依赖于另一个项目(B,静态库)是否会使 exe 文件的大小增加 lib 的大小?或者链接将只在项目 B 所需的编译单元之间完成?

如果 B 是一个静态库,A.exe 的大小将大致 增加 B 的大小。有两个因素可能会干预(在优化构建中):

(1) 消除未使用的函数和数据 (/OPT:REF),这通常会减小可执行文件的大小,

(2) Link time code generation - 当为 B.lib 激活时 - 通常采用大量内联并用于增加可执行文件的大小。

[编辑]

我没有注意到你问题的这一部分:确实在默认情况下链接静态库时,链接器将仅加载引用的 obj 文件。可以使用引用窗格上模糊的 'Use Library Dependency Inputs' 复选框(some details here), or for all references with the 'Link Library dependency inputs' 链接器 属性.

为每个引用覆盖此默认行为