致命错误:Visual Studio 中的“无目标体系结构”

新手上路,请多包涵

当我尝试在 Win32 或 x64 模式下使用 Visual Studio 2010 编译我的 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 编译错误,但我仍然不知道如何解决它。

原文由 philipvr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

使用 #include <windows.h> 代替 #include <windef.h>

windows.h 维基百科页面:

有许多子头文件自动包含在 windows.h 中。由于依赖关系,其中许多文件不能简单地单独包含(它们不是 自包含 的)。

windef.hwindows.h 自动包含的文件之一。

原文由 philipvr 发布,翻译遵循 CC BY-SA 3.0 许可协议

对我来说,我使用的是 glfw 和 imgui,我错误地包含了这个头文件:

 #include <stringapiset.h>

我刚刚删除它,这个错误不再

原文由 The Oathman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题