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

时间:2015-06-22 19:53:48

标签: c++ linker

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

1 个答案:

答案 0 :(得分:1)

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

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

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

[编辑]

我没有注意到你的问题的这一部分:确实在链接静态库时,链接器只会加载被引用的obj文件。可以使用参考窗格(some details here)上隐藏的“使用库依赖项输入”复选框或使用“Link Library dependency inputs”链接器属性的所有引用来覆盖每个引用的默认行为。