【发布时间】:2023-03-28 14:28:01
【问题描述】:
我有一个 Visual Studio 2008 C++ 项目,它输出一个静态库并使用 Boost 库的某些功能。当我在调试配置中构建项目时,.lib 文件为 7.84 MB。当我在 Release 配置中构建项目时,.lib 文件为 23.5 MB。 !!!!
我包含的唯一 Boost 标头是:
boost/function.hppboost/exception/all.hpp
由于这是一个静态库,我没有指定要包含的任何 Boost 库文件,但不知何故它是一个巨大的输出。当我在测试可执行文件中使用该静态库时,生成的 .exe 文件在 Debug 中只有 746 KB,在 Release 中只有 231 KB。
问题是我必须创建库的“发布”以签入不同的存储库以供其他项目使用。而且我不希望每次更新时都必须添加 30 MB 的文件。如果没有别的,我真的很困惑,为什么 Release 版本是 Debug 版本的 3 倍。
有人对我做错了什么有建议吗?
谢谢, 马特
【问题讨论】:
-
也许您正在使用一些结构,导致大量 boost 模板被“实例化”?
-
你确定调试版本链接到静态库,而不是 DLL?
-
@Patrick:我有一个异常文件/类,我使用他们推荐的方式从
boost::exception派生(我在整个项目中都使用它)。我还有一个接受boost::function<double (double x)>参数的类。 -
@John:不确定你的意思?静态库项目实际上并没有链接到其他 lib 文件吗?我认为这是消耗它的 exe 或 dll 的工作。
标签: c++ visual-c++ boost linker static-libraries