2014-10-31 61 views
0

当前我正在使用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

+0

您可以针对速度或尺寸进行优化。例如,更多功能可能在更多地方内联以获得速度,但折衷是更大的尺寸。 – 2014-10-31 09:01:35

+0

Visual Studio可以执行优化,这会在牺牲可执行文件大小的同时提高运行时速度。检查配置属性 - > C/C++ - >优化 - >优化。 – ChrisWard1000 2014-10-31 09:02:16

+0

@ ChrisWard1000是优化是问题,那么这将不考虑调试模式?因为在两种模式下具有相同设置的代码相同。 – 2014-10-31 09:05:52

回答

4

您应该比较您的构建设置,优化和库链接(静态/动态)。如果您不确定,请将您的命令行复制到链接器和编译器,我们可以在这里检查它。

命令行可以在构建日志中找到,或者在项目Properties/C/C++/Command LineProperties/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

+0

请检查我编辑的问题以获得详细的log.Also在'properties'中没有'linker'选项。 – 2014-10-31 09:28:19

0

我记得这个检查后,一位同事抱怨。尝试使用编译器开关直到大小相同,然后检查这些开关的文档

+0

嗨,谢谢你的回复,我是VS新手。编译器开关意味着什么,直到大小相同? – 2014-10-31 09:11:31

+0

项目属性中的不同链接和编译选项。你可以得到为每个构建设置执行的命令,看看他们有什么不同 – Eric 2014-10-31 09:13:15

4

更改设置 - 从“使用链接时代码生成” 配置属性>常规>所有程序优化 为“无整个程序优化”

在此之后更改库规模从76MB下来到我的机器上的21MB

查看附件图片。希望这可以帮助你。

Whole Program Optimization Project Setting