2013-08-16 88 views
1

我有一個項目在Visual Studio 2010中運行。現在我正在使用Visual Studio 2012。 現在我在構建項目時遇到錯誤。 我也查看了GoogleSO。但沒有我得到任何解決方案。錯誤C2065:'errno':在Visual Studio 2012中<string>中的未聲明標識符

c:\program files\microsoft visual studio 11.0\vc\include\string(557): error C2065: 'errno' : undeclared identifier 
2>c:\program files\microsoft visual studio 11.0\vc\include\string(557): error C2065: 'errno' : undeclared identifier 
2>c:\program files\microsoft visual studio 11.0\vc\include\string(562): error C2065: 'errno' : undeclared identifier 
2>c:\program files\microsoft visual studio 11.0\vc\include\string(574): error C2065: 'errno' : undeclared identifier 
2>c:\program files\microsoft visual studio 11.0\vc\include\string(579): error C2065: 'errno' : undeclared identifier 

我試圖與包括stdlib.hsting頭文件,但還是我收到此相同的錯誤。

任何幫助表示讚賞。

+3

您是否在代碼中包含了'errno.h'? – verbose

+0

看起來像你缺少#include ,仍然有點奇怪,因爲我會認爲std :: string將包括它自己需要的一切。 – hetepeperfan

+0

您是如何切換到VS2012的,您是否轉換了解決方案和項目或您是否使用嚮導創建了新項目幷包含現有源? 你在VS2012之後完全重建了嗎?還是有可能還有中間輸出,它是在VS2010中生成的? – SvenS

回答

5

這個問題可能有幾種可能的原因。你應該做的 第一件事就是創建一個線源:

#include <string> 

沒有別的,並嘗試進行編譯。如果這不是 編譯,您的安裝有問題,並且您應該重新安裝它。然後,只需確保,刪除中的所有內容 除了實際來源,項目文件和 解決方案和重建之外。可能會有一些舊文件覆蓋 ,這些文件在某種程度上導致了問題。我懷疑它,但 這是你應該做的東西,無論如何你可以隨時升級 一個編譯器,或者甚至只是安裝一個補丁。 (如果你已經有了源代碼控制,你應該在 簡單的解決方案只是刪除一切,做一個新的, 乾淨的檢出下 一切。)

如果這些措施沒有解決問題(並以某種方式,我懷疑他們不會) 在您的代碼庫 某處出現問題。標準要求errno是一個宏; 以獲取您引用的錯誤消息,宏必須是未定義的。 <string>包括(間接)一個定義它的文件。鑑於 這,我能想到的唯一原因是,較早包括 文件已包含一個文件,其中定義errno,然後 #undef編輯它。要驗證這一點,請將您的#include <string>作爲 首先包含您的源代碼,並查看是否可以解決 問題。如果是這樣,那麼你必須找到 做#undef並修復它的文件。

0

我有同樣的問題。奇怪的是,問題不包括「使用命名空間標準;」包含頭文件。顯然,程序會識別「字符串」,除非我這樣做,即使「char」,「float」等被識別。

+0

我們在Propoties - > c/C++ - > Preprocessor中缺少一些預處理器指令。當我們添加這些預處理器時,我擺脫了這些錯誤 –

相關問題