3

我有幾個VS 2008項目(C++),每次啓動構建時都會鏈接,即使沒有任何更改。即我選擇「構建解決方案」,它編譯和鏈接,我再次選擇「構建解決方案」,它不編譯任何東西,但再次鏈接。儘管沒有任何改變,Visual Studio鏈接

這很煩人,我檢查了所有可能導致它再次鏈接的東西。 有沒有辦法找出爲什麼Visual Studio會做或跳過某些構建步驟?

任何輸入讚賞!

回答

3

我有一段時間來重溫這個問題,同事給了我一個提示,使用sysinternals中的「進程監視器」來找出哪個文件丟失了。

瞧,它工作!事實證明,即使應用程序不需要它,Visual Studio仍堅持鏈接一堆庫。由於一個不幸的(我猜...)事件鏈,其中一個默認的庫路徑從Visual Studios全局設置中消失了,所以VS無法再找到這個庫(在我的例子中是「coredll.lib」)。

這並不影響最終輸出,因爲這個庫根本不需要,但它每次都會觸發一次重新鏈接。

有兩種可能的解決方法: 1)恢復的路徑,這LIB在全球的Visual Studio設置 2)使用「$(NOINHERIT)」在AdditionalLibraries擺脫不必要的LIB的。

我使用瞭解決方案#1,因爲#2需要針對每個項目的每個配置完成,因爲無法通過Property Sheets完成。

0

長鏡頭的位,但檢查任何依賴的DLL上的日期/時間戳。 If they are in the future then a rebuild will occur.

編輯:也試過在編輯器中打開.vcproj文件,檢查是否有異常?如果可能的話,你也可以嘗試從頭開始重新創建它們。

+0

好主意,但沒有運氣。我檢查了我所有的硬盤,並沒有從未來的單個文件... 所以我想VS正在期待一個不存在的文件... – 2009-09-14 09:49:35

1

重建也可能由不存在和未使用的.h屬於該項目的文件引起。由於它們未被使用,所以沒有關於丟失文件的警告或錯誤。

Sysinternals使用前面提到的「Process Monitor」是找出原因的一個很好的提示。

相關問題