库的大小在发布模式下更大,然后在VS2010中调试模式
当前我正在使用Visual Studio 2010(使用C++)编译DLMS库(http://www.gurux.fi/index.php?q=DLMSCOSEMFAQ)。库的大小在发布模式下更大,然后在VS2010中调试模式
我在调试和发布模式下成功编译了库。但是,当我检查两个库的大小,然后释放一个库(.lib)有更多然后双倍大小(76 MB),然后调试一个(31 MB)。
我觉得释放一个有较小尺寸的调试一个,是不是?
是否需要在VS2010中进行任何设置?这里http://pastie.org/9687316
查找版本解除记录调试日志这里http://pastie.org/9687340
您应该比较您的构建设置,优化和库链接(静态/动态)。如果您不确定,请将您的命令行复制到链接器和编译器,我们可以在这里检查它。
命令行可以在构建日志中找到,或者在项目Properties
/C/C++
/Command Line
和Properties
/Linker
/Command Line
。
对于编译器,要查找的最重要的设置是/O
,/M
。
对于链接器,我会特别看。为/OPT
。
你的编译器开关:
/c /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D WIN32 /D NDEBUG /D _LIB /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Release\\" /Fd"Release\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt GuruxDLMS\GXDateTime.cpp
是什么原因造成您的图书馆是大是/GL
。有关说明,请参阅Release mode static library much larger than debug mode version。
请检查我编辑的问题以获得详细的log.Also在'properties'中没有'linker'选项。 – 2014-10-31 09:28:19
我记得这个检查后,一位同事抱怨。尝试使用编译器开关直到大小相同,然后检查这些开关的文档
嗨,谢谢你的回复,我是VS新手。编译器开关意味着什么,直到大小相同? – 2014-10-31 09:11:31
项目属性中的不同链接和编译选项。你可以得到为每个构建设置执行的命令,看看他们有什么不同 – Eric 2014-10-31 09:13:15
更改设置 - 从“使用链接时代码生成” 配置属性>常规>所有程序优化 为“无整个程序优化”
在此之后更改库规模从76MB下来到我的机器上的21MB。
查看附件图片。希望这可以帮助你。
您可以针对速度或尺寸进行优化。例如,更多功能可能在更多地方内联以获得速度,但折衷是更大的尺寸。 – 2014-10-31 09:01:35
Visual Studio可以执行优化,这会在牺牲可执行文件大小的同时提高运行时速度。检查配置属性 - > C/C++ - >优化 - >优化。 – ChrisWard1000 2014-10-31 09:02:16
@ ChrisWard1000是优化是问题,那么这将不考虑调试模式?因为在两种模式下具有相同设置的代码相同。 – 2014-10-31 09:05:52