2011-05-16 597 views
1

我正在嘗試將Visual C++ 2008項目升級到Visual C++ 2010項目。當升級完成,我強迫它,我得到這個錯誤: 致命錯誤LNK1104:無法打開文件「mfc90d.lib」VS2008升級到VS2010「無法打開文件'mfc90d.lib'」

我認爲它應該參照「mfc100d.lib」,我嘗試過很多辦法來解決它但失敗了。

有人遇到同樣的問題嗎?

+0

您是否擁有64位操作系統? – 2011-05-16 08:25:25

回答

7

可能的原因包括

一)你是不是重建所有的源文件 - 嘗試刪除所有輸出OBJ和lib,以確保 b)你要鏈接,將其與VC9建立一個第三方靜態庫 - 你會需要VC10版本 c)您的標題路徑指向VC9標題(請檢查您的解決方案的路徑選項) d)由於某些其他原因,您的項目包含對mfc90d的明確引用。

下一步診斷步驟:在鏈接器上設置/ verbose選項,並確切確定哪個obj在mfc90d.lib中拖動。

馬丁

+1

非常感謝。我發現原因是b)我連接了一個由VC9構建的第三方靜態庫。 – 2011-05-19 01:44:23

+0

well @ user755226:我面臨着幾乎相同的問題。 我的問題是「LINK:致命錯誤LNK1104:無法打開文件」mfc100d.lib「」。能否請你指導我做什麼你的問題..我認爲問題幾乎是相同的.. 抱歉說,我不能發佈任何問題,因爲我的問題會議已經結束。你能幫我謝謝 – RidaSana 2011-06-19 03:25:49

1

我做一個全局搜索的定義「_MFC_FILENAME_VER」我所有的源文件中發現的問題,以我的思念MFC100.dll。我發現下面的定義在我的頭文件之一:

#define _MFC_FILENAME_VER 100 

這是在該塊使用:

#ifdef _DEBUG 
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "d.lib") 
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "d.lib") 
#else 
#pragma comment(lib, "mfc" _MFC_FILENAME_VER ".lib") 
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER ".lib") 
#endif 

我把它改爲:

#define _MFC_FILENAME_VER 110 

所以它會在VS編譯2012年版的MFC(mfc110d.lib)。