【发布时间】:2011-06-18 05:28:38
【问题描述】:
当我尝试在 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 中的所有编译错误,但我仍然不知道如何解决它。
【问题讨论】:
-
如何为我的项目设置目标架构?
-
普通项目不会以这种方式失败。你从一个普通的项目中改变了什么? winnt.h 的第 135 行是什么?你有没有看过头文件的那一行。错误消息为您提供了一些帮助。
-
你应该可以从这里解决它;可能需要在第 127 行之前返回才能获得全貌。埃德温似乎是正确的。
-
尝试一个新的 msvs 项目(虚拟)并将您的源代码复制拖放到其中。尝试编译它,如果可以,将其与您的原始项目进行比较。顺便说一句,不要复制 stdafx。*
-
听起来很糟糕。但是在重新安装之前,您可以先尝试使用新的解决方案,如果这不起作用,您可以手动重新安装 project=templates (google it)。
标签: c++ windows visual-studio visual-c++ compiler-errors