我也有這個問題。將正在運行的VS2008項目轉換爲VS2010時,VS2010項目中的鏈接階段會出現相同的錯誤。它試圖鏈接該項目應該構建的.lib!
我發現我的問題的來源:該項目有一個自定義構建步驟發生在構建結束,在PostBuildEvent之前。此自定義構建步驟將$(OutDir)中的.dll,.lib和.pdb複製到外部位置。
自定義生成步驟的輸出目錄設置爲完整路徑複製.dll文件,.LIB和.PDB,如:
C:/a_new_location/myproject.dll;
C:/a_new_location/myproject.lib;
C:/a_new_location/myproject.pdb.
我發現,每當這個輸出列表中包括的.lib那.lib被添加到鏈接階段鏈接的文件列表中。因此,與上述輸出列表,鏈接階段將有一個文件列表:
myprojectfile1.obj
myprojectfile2.obj
C:/a_new_location/myproject.lib
而這會導致鏈接失敗:
LINK : fatal error LNK1181: cannot open input file 'C:\a_new_location\G4SrcCfgLib.lib'
不要緊,如果自定義生成的副本步驟實際上是複製文件或不。重要的是輸出列表包含.lib。所以,我通過從輸出列表中刪除.lib來解決問題。這樣做的缺點是做一個Clean構建不會清理C:/ a_new_location/lib。但至少它建立了。
您的描述不清楚。 X是一個在您的解決方案中的項目以及另一個使用X的項目嗎?如果是這樣,爲什麼你不能只建立X項目?如果沒有,請進一步描述您的解決方案中的項目... – eran
嗨,項目X在我的解決方案中。該解決方案還有另外幾個項目。項目X使用由其他項目生成的Dll。那部分很好。問題在於,我對該解決方案進行了清理並刪除了發佈文件夾中存在的X.lib文件。稍後當項目X構建時,它應該創建X.dll。但它被提到有一個「X.lib」的輸入依賴關係,它不存在於解決方案中。這個X.lib只會在項目X的成功構建之後才被創建?所以我認爲這種情況類似於「僵局」。 –