c++ visual-studio visual-c++ compiler-errors

c++ - Error fatal: "Sin arquitectura de destino" en Visual Studio



visual-studio visual-c++ (8)

El identificador _WIN32 no está definido.

use #include <SDKDDKVer.h>

Los proyectos generados por MSVS envuelven esto incluyen generando un "targetver.h" local que es incluido por "stdafx.h" que se incluye en un encabezado precompilado a través de "stdafx.cpp" .

EDITAR: ¿tiene un / D "WIN32" en su línea de comandos?

Cuando intento compilar mi proyecto de C ++ utilizando Visual Studio 2010 en el modo Win32 o x64, aparece el siguiente error:

>C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/include/winnt.h(135): fatal error C1189: #error : "No Target Architecture"

Las definiciones de mi preprocesador dicen WIN32; _DEBUG; _CONSOLE;% (PreprocessorDefinitions)

¿Qué está causando este error y cómo lo soluciono?

// winnt.h: lines 127-136, MSVS says this is an inactive preprocessor block #if defined(_WIN64) #if defined(_AMD64_) #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) #elif defined(_IA64_) #define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ? / TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD )) #else #error "No Target Architecture" #endif

Actualización: Creé un nuevo proyecto de msvs y copié mi código en él. Ya no tengo el error : "No Target Architecture" , pero ahora tengo un montón de errores de compilación que involucran winnt.h y winbase.h y no hay errores de compilación que involucren ninguno de mis archivos. ¿Es posible que estos archivos estén dañados? ¿Debo reinstalar MSVS 2010?

Actualización 2: Así que reduje mi problema y descubrí que #include <WinDef.h> está causando todos mis errores de compilación con winnt.h, pero aún no sé cómo solucionarlo.


Otra causa de esto puede ser incluir un encabezado que depende de windows.h , antes de incluir windows.h .

En mi caso, xinput.h antes de windows.h y obtuve este error. Intercambiar el orden resolvió el problema.


Otro motivo del error (entre muchos otros que surgieron al cambiar la compilación de destino de un proyecto de Win32 a X64) no era tener los compiladores de C ++ de 64 bits instalados como se indica en la parte superior de esta página .
Además del comentario de philipvr sobre los encabezados de los hijos, (en mi caso) una inclusión explícita de winnt.h no era unnecessary cuando se estaba usando windows.h .


Parece que _AMD64_ no está definido, ya que no puedo imaginar que estés compilando para Itanium ( _IA64_ ).


Si está compilando 32 bits, asegúrese de no tener definido _WIN64 para su proyecto.


Tuve un problema similar. En mi caso, accidentalmente había incluido winuser.h antes de windows.h (en realidad, una extensión IDE winuser.h había agregado). La eliminación de winuser.h resolvió el problema.


Use #include <windows.h> lugar de #include <windef.h> .

Desde la página wikipedia de windows.h :

Hay una serie de archivos de encabezado secundarios que se incluyen automáticamente con windows.h . Muchos de estos archivos no pueden ser incluidos por sí mismos (no son independientes ) debido a las dependencias.

windef.h es uno de los archivos incluidos automáticamente con windows.h .