【问题标题】:C1189: #error : "No Target Architecture" [duplicate]C1189:#error:“无目标架构”[重复]
【发布时间】:2013-10-18 00:42:28
【问题描述】:

编译时出现如下错误:

c:\program files (x86)\windows kits\8.0\include\um\winnt.h(146): 致命错误 C1189: #error : "No Target Architecture"

无论如何,我在我的项目中没有使用 Windows Kit(或者我没有看到它被包含在内)。我尝试用 32 位、64 位和继承来更改我的项目中的架构目标。什么都没有。有什么想法吗?

编辑:所有包含的列表。前两行来自我的项目。

1>  Remarque : inclusion du fichier :  d:\visual studio 2012\netsdk_poc\mfc_netsdk2\mfc_netsdk2\stdafx.h
1>  Remarque : inclusion du fichier :   d:\visual studio 2012\netsdk_poc\mfc_netsdk2\mfc_netsdk2\Libs\\netsdk.h
1>  Remarque : inclusion du fichier :    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stddef.h
1>  Remarque : inclusion du fichier :     C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1>  Remarque : inclusion du fichier :      C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\sal.h
1>  Remarque : inclusion du fichier :       C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ConcurrencySal.h
1>  Remarque : inclusion du fichier :      C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vadefs.h
1>  Remarque : inclusion du fichier :    C:\Program Files (x86)\Windows Kits\8.0\Include\shared\windef.h
1>  Remarque : inclusion du fichier :     C:\Program Files (x86)\Windows Kits\8.0\Include\shared\winapifamily.h
1>  Remarque : inclusion du fichier :     C:\Program Files (x86)\Windows Kits\8.0\Include\shared\minwindef.h
1>  Remarque : inclusion du fichier :      C:\Program Files (x86)\Windows Kits\8.0\Include\shared\specstrings.h
1>  Remarque : inclusion du fichier :       C:\Program Files (x86)\Windows Kits\8.0\Include\shared\specstrings_strict.h
1>  Remarque : inclusion du fichier :        C:\Program Files (x86)\Windows Kits\8.0\Include\shared\specstrings_undef.h
1>  Remarque : inclusion du fichier :       C:\Program Files (x86)\Windows Kits\8.0\Include\shared\driverspecs.h
1>  Remarque : inclusion du fichier :        c:\program files (x86)\windows kits\8.0\include\shared\sdv_driverspecs.h
1>  Remarque : inclusion du fichier :      C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h
1>  Remarque : inclusion du fichier :       C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ctype.h
1>  Remarque : inclusion du fichier :        C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h
1>  Remarque : inclusion du fichier :       C:\Program Files (x86)\Windows Kits\8.0\Include\shared\kernelspecs.h

【问题讨论】:

  • 你在哪里改变项目的架构?
  • 我有一个 MFC 应用程序,所以我不能再次包含 windows.h ;) 致命错误 C1189: #error : WINDOWS.H 已包含。 MFC 应用不得#include
  • DoctorLove : 项目属性 -> 链接器 -> 计算机目标(我正在翻译,法语是“Ordinateur cible”)
  • *链接器 -> 高级 -> 计算机目标
  • 链接器设置链接器设置。错误来自编译器前级设置。

标签: c++ winapi visual-studio-2012


【解决方案1】:

错误行说

#if defined(_AMD64_) || defined(_X86_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_) || defined(_ARM_)
#define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ? \
                              TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD ))
#elif !defined(RC_INVOKED)
#error "No Target Architecture"
#endif

您已经#included 了该标头,可能间接地通过包含另一个标头。 您可以通过在Properties | C/C++ | Advanced 项目菜单中将“显示包含”设置为“是”来告诉 VS2012 列出它使用的所有包含。如果不需要的话,请尝试不包括winnt.h中拖动的标题。

winnt.h 可能会造成麻烦,例如见here

编辑
因此,预编译头文件包括 windef.h,其中包含有问题的头文件。尝试从预编译的头文件中删除该行。

【讨论】:

  • 我要去看看这个把戏医生爱。我绝对想列出所有包含的内容!
  • 好的,只是为了确定你的意思是我必须检查我的项目中是否包含两次或更多的 winnt ?
  • 不,一点也不 - 你说你没有使用 winnt,所以我试图帮助你找出是什么,以便你可以删除它
  • 好的,我已经搜索了如何访问 pch。我发现很多资料都解释了 pch 是什么,但没有直接修改它的方法。你能解释一下吗?
  • 我知道它与 stdafx 相关联,并且在每一代中都进行了更新。我查看了 stdafx 但没有 winnt.h
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 2010-10-22
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
相关资源
最近更新 更多