2010-04-21 152 views
0

我在同一臺機器上安裝了VS2005和VS2008。我也有一個共同的代碼庫,我使用'05和'08構建。爲此,我有2個VC項目.. '08項目名爲XYZ_2008.vcproj和'05項目名爲XYZ_2005.vcproj,以及相應的2個slns。這兩個項目都將dll,libs和pdbs輸出到同一個輸出目錄(全部使用_2005和_2008後綴)。連續構建VS2005和VS2008 C++項目導致LNK1104錯誤

假設我從一個乾淨的狀態開始,我首先在VS2005中打開XYZ_2005.sln(包含XYZ_2005.vcproj)併成功構建它。然後我關閉VS2005。

接下來,我打開XYZ_2008.sln(包含XYZ_2008.vcproj)並構建(不重建)它。在這一點上,我得到一個錯誤說:

LINK : fatal error LNK1104: cannot open file 'mfc80u.lib' 

如果現在我重建 08年的解決方案,該錯誤消失和生成成功。如果我直接爲'08 sln進行重建而不是構建,構建也會成功。

儘管所有東西都是分開的,但VS08內部似乎正在拾取MFC8文件(來自VS05)而不是MFC9文件。

有人可以幫忙解決這個問題嗎?

在此先感謝!

回答

1

也許鏈接依賴項存儲在構建.obj文件中。 VS2008沒有「看到」重建它的需要,因爲它的源代碼和構建選項都沒有改變。鏈接使用舊的依賴關係並且鏈接失敗時。

我認爲這是一個糟糕的主意混合2 VS構建。如果您需要兩種解決方案,則在從一種解決方案更改爲另一種解決方案時,應始終進行重建。

相關問題