studio - Errores de compilación múltiples con la aplicación básica de C++ en VS2010 Beta 1
errores de sintaxis en c++ (12)
Hace poco instalé VS2010 Beta 1 del sitio web de Microsoft. Comencé una aplicación de consola C ++ Win32 básica, que generó el siguiente código:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
Intenté compilar el código solo para ver cómo se ejecuta y, en ese momento, encontré varios (más de 100) errores de compilación.
Aquí está la primera parte de la salida de construcción:
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
pastebin para la lista completa
Pensé que tal vez los archivos de inclusión se mezclaron con alguna otra versión del compilador que instalé anteriormente (también tengo VS 2008), así que reinstalé el VS2010 solo para sobrescribir los encabezados, pero eso no hizo mucho.
Gracias de antemano por cualquier ayuda que pueda ofrecer ya que estoy indefenso
- Para evitar MFC, WTL y ATL Error.
Ir a C / C ++ General “Directorio de inclusión adicional” $ (SystemDrive) / Archivos de programa / Microsoft Visual Studio 9.0 / VC / include
- Por error de macro por defecto de Windows. Si hay algún problema de macro relacionado con Windows como el siguiente IN , _IN_OPT_ y OUT Ir a C / C ++ Preprocessor “Ignorar la ruta de inclusión estándar” a SÍ
¿Alguna vez construiste el proyecto con la versión anterior? stdafx.h es el nombre de encabezado precompilado estándar para proyectos msvc. Si construyó con VS2008, podría haber creado el encabezado precompilado y tal vez VS2010 lo está recogiendo. (Si no está familiarizado, un encabezado precompilado es un resultado de compilación generado por el compilador que se mantiene para acelerar la compilación de los archivos de encabezado la próxima vez que compile).
Me gustaría probar una limpieza, luego una inspección manual del directorio del proyecto (y compilar el directorio de resultados si no está en un lugar obvio), y luego una compilación completa. Si eso no lo solucionara, desactivaría los encabezados precompilados (al menos temporalmente) en la configuración del proyecto y los reconstruiría.
Algo está mal con tu camino de inclusión. Use la opción "/ showIncludes" ("Propiedades de configuración / C / C ++ / Avanzado / Mostrar incluye" en las opciones de proyecto del IDE) para ver qué encabezados se incluyen desde dónde.
Vea esta pregunta para más detalles:
Descubrí que mi directorio de inclusión se estaba heredando de los valores predeterminados de los padres o del proyecto. El problema es que en VS2010 se han eliminado las opciones globales para incluir rutas. Después de algunas búsquedas, encontré que los dos archivos que contenían estas configuraciones (de mi instalación anterior de VS) estaban en el siguiente directorio:
C: / users / username / appdata / local / microsoft / msbuild / v4.0 /
Los dos archivos son:
- Microsoft.Cpp.Win32.user.props
- Microsoft.Cpp.x64.users.props
Editar la variable IncludePath
Elimine la ruta DDK, guardó el archivo y reinició VS2010. Esto resolvió mi problema para todos los nuevos proyectos.
Después de agregar el parámetro / showincludes obtuve el siguiente resultado:
1> Note: including file: c:/testapp/stdafx.h
1> Note: including file: c:/testapp/targetver.h
1> Note: including file: C:/Program Files/Microsoft SDKs/Windows/v7.0A/include/WinSDKVer.h
1> Note: including file: C:/WinDDK/6001.18001/inc/api/SDKDDKVer.h
1> Note: including file: C:/Program Files/Microsoft Visual Studio 10.0/VC/include/stdio.h
1> Note: including file: C:/Program Files/Microsoft Visual Studio 10.0/VC/include/crtdefs.h
1> Note: including file: C:/WinDDK/6001.18001/inc/api/sal.h
1> Note: including file: C:/Program Files/Microsoft Visual Studio 10.0/VC/include/vadefs.h
Tendría sentido que, por algún motivo, cargue los dos archivos de la ruta del DDK y no el direccionamiento del VS2010, si ese es el problema, ¿cómo le digo que use la ruta correcta?
El problema está aquí: C: / WinDDK / 6001.18001 / inc / api / sal.h
sal.h define las anotaciones, que se utilizan en los encabezados de CRT ... El DDK incluye su propia sal.h, que está obsoleta y no contiene todas las anotaciones.
Hay 2 soluciones posibles: cambiar las rutas de inclusión para que "C: / Archivos de programa / Microsoft Visual Studio 10.0 / VC / include" aparezca antes de "C: / WinDDK / 6001.18001 / inc / api"
- simplemente elimine "C: / WinDDK / 6001.18001 / inc / api / sal.h" :)
Intente cambiar proyecto-> propiedades -> propiedades de configuración -> general -> Conjunto de caracteres para "Usar conjunto de caracteres de múltiples bytes"
Sí, el cambio de users.prop funciona, ¡pero qué extraño! No puede cambiar esta configuración desde un menú en Visual Studio y no puede sobrescribirla en las propiedades del proyecto. Incluso si borra la configuración que acaba de poner $ (IncludePath), sin embargo, utiliza la ruta predeterminada al DDK.
Simplemente use ''$ (IncludePath); C: / WinDDK / 6001.18001 / inc / api'' como directorios de inclusión.
Tengo el mismo problema, puede copiar sal.h
desde Microsoft Visual Studio 10.0/VC/include
a WinDDK/7600.16385.1/inc/api/
y copiar Microsoft Visual Studio 10.0/VC/include/CodeAnalysis
a WinDDK/7600.16385.1/inc/api/
.
Tuve el mismo problema después de agregar la ruta al directorio DDK en las páginas de propiedades del proyecto en
Configuration Properties -> C/C++ -> Additional Include Directories
Después de cambiar la ubicación a
Configuration Properties -> VC++ Directories -> Include Directories
y agregar la ruta al DDK después de $ (IncludePath) todo funcionó bien.
Juriy Petrochenkov estaba en el camino correcto con su comentario, así que volví a verificar dónde había agregado el directorio DDK y, he aquí que estaba equivocado. ¡Gracias a Juriy!
o puede agregar, $(VSInstallDir)/VC/include/sal.h
a la configuración de forzosos incluidos en su configuración avanzada de C ++. Esto crtdef.h
línea crtdef.h
#include <sal.h>
para #include "sal.h"
pero mucho menos destructiva. obligándolo a usar la carpeta actual en lugar de incluir las rutas del sistema.