2014-10-31 56 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