標籤:

在使用lib時,代碼都被鏈接到exe中去了嗎?

有個靜態庫demo.lib,其中有兩個類A和B。

而我的程序使用了demo.lib這個靜態庫,但我只使用了其中的類A,沒有使用類B(類A和類B沒有依賴關係)。

這樣的情況,exe在鏈接生成文件時,類B的代碼是否都被一起鏈接進去了(增加了文件體積)?


如果是編譯成release,最後exe出來之後會全文優化,沒用的代碼全部都刪掉了。release做了這麼多事情,所以編譯的時候才花了這麼多時間。但是如果你用debug,就直接變大。


有編譯選項可以選擇把一個函數作為一個section的,鏈接的時沒用的函數就不用鏈接進來了。

gcc底下用--gc-section和-ffunction-sections,win下應該也有類似的選項。

就醬。


有一個選項可以選擇去掉沒有用到的函數代碼。

msdn 函數級別鏈接。


不是不可能,是絕對不會。房子絕不會在漲價中去庫存


推薦閱讀:

學習C++,應該循序漸進的看哪些書?
和團隊做物理引擎,做到商業程度還需要什麼?
編程時IDE里的Intellisence好像是個編譯器前端一樣,什麼都知道.這是怎麼實現的?
程序員怎樣避免高強度的工作?
【C語言】關於C裡面數組批量初始化?

TAG:CC |