Visual c++ 与调试相比,发布库是巨大的

Visual c++ 与调试相比,发布库是巨大的,visual-c++,Visual C++,我有一个带有标准调试/发布构建选项的静态库项目。我很好奇地发现,虽然debug.lib是一个相当大的22Mb,但发行版却高达100Mb。这也不是一个庞大的代码库,大约75个类,没有一个是非常庞大的 我的问题是这是否正常,我是否应该关心?理想情况下,发布库应该小于调试库 我猜您可能正在静态链接其他库,如MFC、ATL等 检查您的发布和调试生成设置 使用#pragma一次以避免多次包含文件。我通常希望相反的结果 是否有可能在包含预处理器的块中有大量代码只包含在发布版本中 在这种情况下,模板代码尤其可

我有一个带有标准调试/发布构建选项的静态库项目。我很好奇地发现,虽然debug.lib是一个相当大的22Mb,但发行版却高达100Mb。这也不是一个庞大的代码库,大约75个类,没有一个是非常庞大的


我的问题是这是否正常,我是否应该关心?

理想情况下,发布库应该小于调试库

我猜您可能正在静态链接其他库,如MFC、ATL等

检查您的发布和调试生成设置


使用
#pragma一次
以避免多次包含文件。

我通常希望相反的结果

是否有可能在包含预处理器的块中有大量代码只包含在发布版本中

在这种情况下,模板代码尤其可疑

更新

我认为这个问题最有可能是由于在发布模式下链接到静态lib,而在调试模式下链接到共享lib


+1不,这不正常。应该是相反的。是的,你应该关心

我会再次查看大小,以确保我没有以某种方式转换发行版和调试大小

然后查看您正在链接以进行发布和调试的库。您是否意外地将调试库链接到配送,并将配送库链接到调试


仔细查看发布和调试的设置。一些非常可疑的事情正在发生。

是否有可能大量的代码是内联的,而调试版本不是“内联的”?

我会检查您是否在发布模式下静态链接库,在调试模式下动态链接库。例如,您可以静态连接C++运行时。

有一件事可以解释这样的大小:嵌入发布版本中的调试符号(而不是作为PDB构建)。您确定没有为发布版本生成生成调试符号吗?(你使用的是哪种Visual C++?)

< p>我也有同样的问题。解决方法非常简单。项目属性/配置属性/常规/整个程序优化使用无整个程序优化,而不是使用链接时间代码生成。我的静态库的大小从5MB减少到1.3MB

模板代码在调试版本中像发行版一样被内联释放,所以这不太可能是这里的问题。同意,除非是在if发行版或类似的情况下。我不这么认为;发行版编译器/优化可以将模板代码折叠在一起,几乎什么都没有。这是一个巨大的尺寸差异。你问的是一个静态库项目,对吗?是的,对不起。编辑以澄清。我现在有这个问题。你找到原因了吗?假设他问的是一个静态库项目,那么静态库永远不会与项目中的任何东西相关联。静态库的链接仅在使用库时发生。请更正Neil。此处无链接,仅外部链接,包括2008。PDB/调试信息是我计划密切关注的一个领域。。。我通常会为发布和调试生成PDB,但这应该是一个单独的文件。ok。如果使用pch文件,罪魁祸首可能是/Z7和/或/Yd。您可能希望提供您在命令行上使用的所有选项。不确定原因,但这正是我的原因。除非您在某处部署.lib文件,否则这不应该是一个真正的问题。如果您只是将它们保留在您的解决方案的本地,那么应该没问题,因为使用静态库的.exe或.dll文件将消除它不需要的内容。我的问题: