1

我更新從VS2008到VS2010一個項目,我得到這個錯誤:似乎無法忽視庫在Visual Studio 2010

uafxcwd.lib(afxwinappex.obj) : error LNK2005: "public: virtual struct CRuntimeClass * __thiscall CWinAppEx::GetRuntimeClass(void)const " ([email protected]@@[email protected]@XZ) already defined in WinAppEx.obj

我用盡了一切我能想到的。 uafxcwd.lib位於鏈接器中的「其他依賴項」和「忽略特定默認庫」設置中。出於某種原因,它似乎沒有忽略uafxcwd.lib庫。

任何幫助將不勝感激。

+1

聽起來很明顯,但你有沒有嘗試清理你的解決方案,並重新構建它? – Mangist

+0

是的。這通常可以解決這些奇怪的問題,但這次不行。 – litereddonut

+0

你有沒有試過這個,檢查鏈接順序:http://support.microsoft.com/default.aspx?scid=kb;en-us;q148652 – Mangist

回答

1

修正了它。問題是VS2010中的uafxcwd.lib引入了一個新類cwinappex。這與我所做的班級名字一致,導致衝突。

誰會搶劫它?

1

很久以前我有過這個問題,我發現一個項目已經正確設置並編譯沒有錯誤。我也做了一些筆記,但我不記得(我在哪裏)得到解決方案。

這就是:

您使用的是C運行時庫在MFC項目和庫以錯誤的順序鏈接。 CRT和MFC庫包含新的,刪除和DLLMain,其中CRT正在使用弱外部鏈接。 MFC庫中的所有函數都必須在CRT之前進行鏈接。

爲了實現這一點,請執行下列操作:

在項目設置,鏈接,輸入,去忽略庫和添加Libcmtd.lib。這將從鏈接過程中排除Libcmtd.lib。

既然你需要它,它必須包括在內。您可以通過在「附加依賴項」框中添加庫來強制執行此操作。但按以下順序添加庫:uafxcw.lib LIBCMT.lib。

正如yu可以看到的,uafxcw.lib是之前 LIBCMT.lib。這應該解決您的問題。

+0

我試過這個,它不起作用。衝突不在這兩個庫之間,而是在uafxcwd.lib和生成的obj文件之間。 – litereddonut