首页 > 解决方案 > 即使正在使用所有函数,库文件也比可执行文件大十倍

问题描述

我一直致力于制作一些库,并且我有一个测试系统,每个库我将有一个解决方案,一个项目构建库,另一个项目在 Visual Community 2019 中测试和执行。“ library tester”可执行文件测试并使用库中的所有函数以及其他代码来执行自己的执行,但即使在 Debug 构建中,可执行文件的物理大小也比库小 5-10 倍。据我了解,C 库包含符号定义,因此每当库测试器项目引用一个函数时,链接器基本上会将 .lib 代码复制到 .exe 中。如果我对这个过程的(松散的)理解是正确的,怎么可能所有的符号都被解析了,而.lib 却使.exe 相形见绌?

精确测量:

在调试版本上,exe 为 109KB,.lib 为 527KB。

在 Release 版本中,exe 为 30KB,.lib 为 2.9MB。

标签: cvisual-c++static-librariesstatic-linking

解决方案


推荐阅读