C++ C1189:#error:“无目标架构”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19292655/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 22:40:54  来源:igfitidea点击:

C1189: #error : "No Target Architecture"

c++winapivisual-studio-2012

提问by user2764048

I have the following error when compiling :

编译时出现以下错误:

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

c:\program files (x86)\windows kits\8.0\include\um\winnt.h(146):致命错误 C1189:#error:“无目标架构”

Anyway I do not use Windows Kit in my project (or I didn't see it was included). And I tried to change the architecture target in my project with 32, 64 bits, and inherited. Nothing does. Any idea ?

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

EDIT : list of all the includes. The two first lines are from my project.

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

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.0\Include\shared\windef.h
1>  Remarque?: inclusion du fichier?:     C:\Program Files (x86)\Windows Kits.0\Include\shared\winapifamily.h
1>  Remarque?: inclusion du fichier?:     C:\Program Files (x86)\Windows Kits.0\Include\shared\minwindef.h
1>  Remarque?: inclusion du fichier?:      C:\Program Files (x86)\Windows Kits.0\Include\shared\specstrings.h
1>  Remarque?: inclusion du fichier?:       C:\Program Files (x86)\Windows Kits.0\Include\shared\specstrings_strict.h
1>  Remarque?: inclusion du fichier?:        C:\Program Files (x86)\Windows Kits.0\Include\shared\specstrings_undef.h
1>  Remarque?: inclusion du fichier?:       C:\Program Files (x86)\Windows Kits.0\Include\shared\driverspecs.h
1>  Remarque?: inclusion du fichier?:        c:\program files (x86)\windows kits.0\include\shared\sdv_driverspecs.h
1>  Remarque?: inclusion du fichier?:      C:\Program Files (x86)\Windows Kits.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.0\Include\shared\kernelspecs.h

回答by doctorlove

The error lines say

错误行说

#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

You have #included that header, possibly indirectly by including another header. You can tell VS2012 to list all the includes it uses by setting "Show Includes" to yes in the Properties | C/C++ | Advancedproject menu. Then try not including the header that is dragging in winnt.hif you don't need it.

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

winnt.hcan cause trouble e.g. see here

winnt.h可能会引起麻烦,例如见这里

edit
So, the precompile header includes windef.h which includes the offending header. Try removing the line from the precompiled header.

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