2011-01-19 20 views
2

我想在MS Visual Studio 2005中構建一個大型C++應用程序時減少鏈接時間。我的鏈接時間目前是7到100秒,通常接近7(但它似乎取決於運氣)。MS Visual Studio中的部分鏈接?

我的應用程序由大約20個靜態庫組成,其中一個很大,很少發生更改,並且依賴於大型第三方庫,而這個庫並未被我的任何其他庫所使用。我認爲這是一個經典案例,其中部分鏈接將提高構建時間。通過「部分鏈接」我的意思是任何ld -r在Linux上。

MS Visual Studio可以「部分鏈接」嗎?我沒有在他們的文檔中找到它,但也許他們稱它爲不同的名稱,或者它可能是一個隱藏的功能。

我對部分鏈接的猜測是否有意義?它真的有機會幫助我嗎?

回答

1

linking incrementally通過/INCREMENTAL切換你在找什麼?

你可以做的另一件事是通過額外的間接級別:將靜態庫包裝到一個DLL中,並通過DLL公開應用程序使用的任何東西。這個DLL可以很少被構建,並且與它鏈接可能會便宜得多。

+0

我已經使用增量鏈接。如果這相當於我所要求的,我倒黴。 – anatolyg 2011-01-19 19:59:18

0

這看起來可能不重要,但我的解決方案是使用模塊定義文件foo.def)。 微軟提供的file format specification意味着它只能用於DLL文件, ,但它對靜態庫也非常有效 所以我必須將我的庫改爲DLL

這將我的最小鏈接時間從7秒減少到2秒(可能也有助於平均鏈接時間)。