在VS2010 Beta 1上使用基本C++应用程序进行多次编译错误

use*_*771 20 c++ compilation visual-studio-2010

我刚刚从微软网站安装了VS2010 Beta 1,我启动了一个基本的C++ Win32控制台应用程序,它生成了以下代码:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译代码只是为了看它是如何运行的,然后我遇到了几个(超过100个)编译错误.

这是构建输出的第一部分:

1>ClCompile:
1>  stdafx.cpp
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): error C2065: '_In_opt_z_' : undeclared identifier
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): error C2143: syntax error : missing ')' before 'const'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): warning C4229: anachronism used : modifiers on data are ignored
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): error C2182: '_invalid_parameter' : illegal use of type 'void'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): error C2491: '_invalid_parameter' : definition of dllimport data not allowed
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(520): error C2059: syntax error : ')'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(527): error C2065: '_In_opt_z_' : undeclared identifier
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(527): error C2143: syntax error : missing ')' before 'const'
1>c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(527): warning C4229: anachronism used : modifiers on data are ignored
Run Code Online (Sandbox Code Playgroud)

pastebin的完整列表

我想也许包含文件被我之前安装的其他一些编译器版本混淆了(我也有VS 2008)所以我重新安装了VS2010只是为了覆盖标题但是没有做太多.

提前感谢您提供的任何帮助,因为我很无助

小智 24

问题出在这里:C:\ WinDDK\6001.18001\inc\api\sal.h

sal.h定义了注释,它们在CRT头中使用...... DDK包含它自己的sal.h,它已经过时,并且不包含所有注释.

有两种可能的解决方案: - 更改包含路径,以便"C:\ Program Files\Microsoft Visual Studio 10.0\VC\include"出现在"C:\ WinDDK\6001.18001\inc\api"之前

  • 只需删除"C:\ WinDDK\6001.18001\inc\api\sal.h":)

  • 我能够使用方法一.DDK包含的来源是继承的属性表"Microsoft.Cpp.Win32.User".这添加了DDK _before_继承的`$(VCInstallDir)include`.要解决此问题,请在DDK之前的"Microsoft.Cpp.Win32.User"表中添加额外的`$(VCInstallDir)include`. (3认同)

小智 6

只需使用'$(IncludePath); C:\ WinDDK\6001.18001\inc\api'作为包含目录.


Pet*_*ona 0

您是否曾经使用之前的版本构建过该项目?stdafx.h 是 msvc 项目的标准预编译头名称。如果您使用 VS2008 构建,它可能已经创建了预编译头,并且 VS2010 可能会拾取它。(如果您不熟悉,预编译头是由编译器生成的构建输出,它会保留下来以加快下次构建时头文件的编译速度。)

我会尝试清理,然后手动检查项目目录(如果它位于不明显的位置,则构建输出目录),然后进行完整构建。如果这不能解决问题,我会在项目设置中关闭预编译头(至少暂时)并重建。