2008-12-03 63 views
0

我剛在我的新系統上安裝了用於Windows Server 2008和.NET 3.5的Platform SDK,並且第一次嘗試編譯WIN64的項目。該程序的Unicode發佈版本爲32位(使用不再可用的免費工具包中的優化編譯器)而構建,大約2.8 MB。使用來自最新PSDK的amd64編譯器,該程序大於5 MB。MSVC++ 2008和PSDK編譯器有區別(重新優化)嗎?

我最關心的程序大小,所以一切都建立在/ O1開關。我期待該程序在爲64位構建時變得更大,但不是那麼多。該尺寸更符合Express版本的構建,其中(某些)優化不可用。

PSDK中的編譯器和MSVC 2008 Professional的編譯器是否會創建大小不同的程序? PSDK中的編譯器是否以相同的方式進行優化,或者甚至完成?

感謝您的任何見解。

編輯:

程序和所有鏈接庫所使用的命令行上同一makefile.vc,所以在編譯設置差異不太可能建成。我基本上只是使用另一個命令文件來啓動一個適合64位編譯環境的shell。

下面是該應用程序的大小:

 
    VC++ Toolkit 2003 32 bit cl.exe: 13.10.3052 for 80x86  2.916.352 
    Platform SDK  32 bit cl.exe: 15.00.30729.01 for 80x86 2.881.536 
    Platform SDK  64 bit cl.exe: 15.00.21022.08 for x64  5.138.432 

因此,64位版本:-(

+0

您應該確保環境變量不會影響其他方面。 – leppie 2008-12-03 19:35:38

+0

謝謝你的提示,明天我會看看。還將使用PSDK編譯器進行32位構建,以查看其中的尺寸差異。 – mghie 2008-12-03 19:55:34

回答

1

一個64位二進制將比32位二進制大,由於代碼方面的差異,靜態數據等我們的項目進來在7.1MB(x86)與10.7MB(x64)之間,這是相當數量的代碼。除非你有很多指針大小的靜態數據,否則幾乎會使聲音加倍過度。

確保您使用/ OPT:REF鏈接來放棄任何未引用的符號。

0

大78%,我很懷疑它的優化程序尺寸的差異可能有。以調試信息和/或靜態庫被鏈接英寸確保你不鏈接到任何靜態庫,你不需要。