1
使用MSVC時,是否使項目(A,exe)依賴於另一個項目(B,靜態庫)增加了exe文件大小的lib的大小?或者僅在項目B所需的編譯單元中進行鏈接?項目依賴關係的二進制概述C++
使用MSVC時,是否使項目(A,exe)依賴於另一個項目(B,靜態庫)增加了exe文件大小的lib的大小?或者僅在項目B所需的編譯單元中進行鏈接?項目依賴關係的二進制概述C++
如果B是一個靜態庫,A.exe的大小將增加大致 B的大小。兩個因素可以潛在地干預(在優化版本):
(1)未使用的函數和數據(/OPT:REF),其通常降低了可執行文件的大小消除,
(2)Link time code generation - 用於B.LIB激活時 - 通常使用大量內聯並用於增加可執行文件的大小。
[編輯]
我沒有注意到你的問題的這部分:連接默認情況下,靜態庫鏈接器將只加載被引用的OBJ文件時,確實如此。可以使用參考窗格(some details here)上隱含的「使用庫依賴項輸入」複選框或使用'Link Library dependency inputs'鏈接程序屬性的所有引用來覆蓋每個參考的默認行爲。
* lib *是靜態還是動態?靜態庫會增加可執行文件的大小;動態或共享庫不會。 –
B是一個靜態庫。 –