我有點遲到這個問題,但遲到比從來沒有更好。自推出以來,我一直使用Visual Studio 6.0,但最近在新PC上切換到VS 2013。Visual Studio 2013創建更大的EXE的 - 沒有MFC
我已經讓自己的項目在2013年建成,但生成的可執行文件始終比生成的VS6.0大。我在這裏看到過類似的線索,關於從VS2008到VS2010的轉換過程中出現的情況,以及這裏的意見和建議似乎都將變化歸因於靜態鏈接的MFC庫中的更改。但是,我的項目是直接C代碼。沒有C++,更不用說MFC了。並且我的項目中「使用MFC」選項設置爲「使用標準Windows庫」(大概由生成2013兼容項目的導入工具設置)。唯一使用的非stadard庫是wsock32.lib。
額外的大小不是一個殺手,但它是一個重要的相對於整個應用程序的大小。我最大的.exe文件從980Kb增加到了1.3Mb--大小增加了35%,以小尺寸爲賣點的應用程序(即安裝這個小應用程序,您可以訪問我們所有的好東西)。這沒有調試信息 - 調試版本的增加更多 - 但我並不真正關心這一點。
任何想法如何去除新的殘留 - 甚至知道它是什麼?
從歷史上看,將一次調用鏈接到「printf」用於引入大量靜態lib代碼。我並不是說你的問題是printf,但它可能是一些lib調用,由於某些新功能,現在很重(例如,自VS6以來,有多少功能已添加到WinSock中?)另一種可能性是添加到編譯器的安全性功能code-gen自VS6以來。 – franji1 2014-09-04 04:35:36
即使您不願意在單獨安裝的C++運行時DLL上添加依賴項,也可以使用'/ MD'進行生成,因爲這樣可以很好地說明應用程序與庫的大小有多大關係。 – 2014-09-06 01:41:22
您正在追趕16年的處理器開發和C++代碼優化器的改進。更大的代碼*可以更快的代碼,內聯和循環展開優化由於更大的CPU高速緩存,自動矢量化和自動並行化,不可避免地使用更復雜的指令。字節的價格便宜了100倍,在1.3倍的尺寸上增加了無用的煩惱。 – 2014-09-06 11:36:25