当我尝试使用Visual Studio2010在Win32或x64模式下编译我的c++项目时,我得到以下错误:
>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture"
我的预处理器定义是WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
是什么导致了这个错误?我如何修复它?
// 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更新:我创建了一个新的msvs项目,并将代码复制到其中。我不再有error : "No Target Architecture",但是现在我有一堆涉及winnt.h和winbase.h的编译错误,并且没有涉及我的任何文件的编译错误。有没有可能这些文件已经损坏?我需要重新安装MSVS 2010吗?
更新2:所以我缩小了我的问题范围,发现是#include <WinDef.h>导致了我使用winnt.h的所有编译错误,但我仍然不知道如何修复它。
发布于 2011-01-31 06:09:43
使用#include <windows.h>而不是#include <windef.h>。
从windows.h维基百科页面:
有许多自动包含在
windows.h中的子头文件。由于依赖关系,这些文件中的许多文件不能简单地包含在它们自己中(它们不是自包含的)。
windef.h是windows.h自动包含的文件之一。
发布于 2014-11-05 04:20:59
另一个原因可能是在包含windows.h之前包含一个依赖于windows.h的标头。
在我的例子中,我在windows.h之前包含了xinput.h,并得到了这个错误。交换订单解决了问题。
发布于 2019-07-18 20:51:25
通过将以下包含文件和定义放在第一位来解决它:
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>https://stackoverflow.com/questions/4845198
复制相似问题