2013-08-16 86 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中缺少一些预处理器指令。当我们添加这些预处理器时,我摆脱了这些错误 –

相关问题