2016-06-10 35 views
2

我有一個使用STL,boost和其他幾個庫的C++ Windows應用程序。 應用程序沒有太大的作用,但尺寸很大。 我必須找到一種方法來減小應用程序的大小,但我不明白這些庫的哪個部分會炸燬我的應用程序的大小。如何找到炸燬我的應用程序大小的代碼?

(也許我可以切換STL /升壓,或通過自己實現不便,或通過不同的方式做的不便,等...)

我們是否有任何工具/指南,調查進口符號,並找出哪些給應用程序的大小增加最大?

UPDATE

我在問發佈版本。

我不問有關編譯器的配置,但我問了一下工具,它會告訴我的代碼的哪些部分給我的應用程序的大小增加最多。

所有庫包含靜態。因此,如果我可以刪除重量級的依賴項,應用程序的大小將顯着縮小。

+2

在Unix上,'nm'是一個有用的工具https://en.wikipedia.org/wiki/Nm_(Unix ) –

+0

@ChrisBeck謝謝。我會嘗試'nm',如果我沒有找到適合Windows的版本... –

+0

Boost可能很大:http://stackoverflow.com/questions/2839172/why-my-c-output-executable-is-so-大 – Drakosha

回答

-1

您正在調試構建?這可能會更大。怎麼樣在可執行文件上做strip

+0

不,我問的是發佈版本 –

+0

strip怎麼樣,有幫助:http:// stackoverflow。com/questions/1540523/strip-executable? – Drakosha

+2

'Strip'刪除用於調試目的的符號信息。在Windows(VS2015)調試信息未放置在發佈版本中。 –

1

Boost是大型圖書館。如果你需要增強你不需要STL。

如果STL足夠滿足您的需求,那麼您只能使用STL。

此外,我認爲你可以配置Visual Studio來輸出鏈接過程的跟蹤輸出。

的一些想法檢查庫的位置:

How to See the Contents of Windows library (*.lib)

Tools for inspecting .lib files?

+0

好的。例如,我需要boost.thread。我可以使用flag'/ VERBOSE:LIB'並且看到我的應用程序鏈接到這個庫。但我不知道從lib中導入的方法列表。我不知道這些方法的大小... –

+0

@VictorMezrin我從stackoverflow添加了一些可能有用的鏈接。 – sg7

相關問題