根本原因:

是因为单独包含了一些windows.h已经包含了的头文件如"fileapi.h","WinUser.h",但是却没有包含windows.h
或者
先包含了如"fileapi.h","WinUser.h",后包含windows.h,顺序不对

先说解决方案:

在代码中 加入include  “windows.h” 即可,或者调整顺序,把winows.h放在前面

网上的解决方案:

在项目中添加_AMD64_宏(其他三个也可以)也可以解决该问题

具体方法:项目名称右键-->属性-->C/C++-->预处理器-->添加宏,如下所示:

具体过程:

我在调用ShellExecute 函数时提示错误 "No Target Architecture",代码简化如下:

#include "stdafx.h"
#include "WinUser.h"
#include <ShellAPI.h>
int main()
{
ShellExecute(0, NULL, L"http://www.baidu.com", NULL, NULL, SW_SHOWNORMAL);
return 0;
}

定位错误位置在winnt.h

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

原因也很简答,就是没有定义 (_AMD64_) 、(_X86_)这几个宏,编译器检查到,就抛出异常

在调用 ShellExecute时,SW_SHOWNORMAL提示找不到,查了下,SW_SHOWNORMAL这玩意是在"WinUser.h"中定义,于是#include "WinUser.h"

"WinUser.h"里面定义了所有 user32.dll 导出的 API 以及各种宏定义,例如代表消息ID 的 WM_* 宏,与 Windows UI 相关的大部分 API 都是在 winuser.h 中定义的。这个文件是被include在了windows.h中的

所以一般都是直接 #include <windows.h>即可,而上面说到的 (_AMD64_) 、(_X86_)也是在windows.h 中先定义的,所以报错了

在此例中,winuser和 <ShellAPI.h>都可以删除,直接包含一个windows.h即可

windows.h下的重要的头文件有哪些:

windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:

WINDEF.H 基本数据类型定义

WINNT.H 支持Unicode的类型定义

WINBASE.H Kernel(内核)函数

WINUSER.H 用户界面函数     //本例中shellexecute就定义在此

WINGDI.H 图形设备接口函数

报错C1189 #error: "No Target Architecture"的更多相关文章

  1. fatal error C1189: #error : "No Target Architecture" 解决办法一

    在编译程序的时候发现报这个错误,在网上看到很多文章,说设置include路径,lib目录等等,都没有解决.最后调整了以下include文件的顺序,问题解决了.例如 从头文件a.h中截取的一段 type ...

  2. [转]在C++中容易出现的#error No Target Architecture

    项目环境:win 7 64位,编译环境:VS2013 最近在写C++的项目,发现了自己很多不会的地方,这也使得我在C++中的成长变得比较快,下面我就说说我自己在写项目是遇到的一些问题,希望可以帮到一些 ...

  3. JS function document.onclick(){}报错Syntax error on token "function", delete this token

    JS function document.onclick(){}报错Syntax error on token "function", delete this token func ...

  4. 一个参数大小写引发的uploadify报错 "Syntax error, unrecognized expression: #"

     上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2  报错原因:参数ID[hi ...

  5. yum报错:Error: xz compression not available

    测试服务器(centos6.5)经过一段时间的折腾,有一天在上面进行yum操作时突然出现下面的报错: Error: xz compression not available 最后经过一番排查,发现原因 ...

  6. yum报错: Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

    在Centos 5.x或6.x上安装RHEL EPEL Repo repository,资源库,源的意思.RHEL EPEL(Extra Packages for Enterprise Linux)  ...

  7. redis报错Windows error 0x70(a large memory)

    redis报错Windows error 0x70 redis 嫌弃你内存不够了,就给你不开第二个实例. The Windows version of Redis allocates a large ...

  8. ASSERT报错:error C2664: “AfxAssertFailedLine”: 不能将参数 1 从“TCHAR []”转换为“LPCSTR”

    转载请注明来源:崨雁嫀筝 http://www.cnblogs.com/xuesongshu 这个错误是我在把tinyxml修改为宽字符(Unicode)版本时候遇到的问题,我首先按关键字把所有有ch ...

  9. 启动安卓模拟器报错 emulator: ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1) 解决办法

    启动安卓模拟器报错 emulator: ERROR: x86_64 emulation currently requires hardware acceleration!  CPU accelerat ...

随机推荐

  1. 2019-2020 ICPC, NERC, Northern Eurasia Finals

    A. Apprentice Learning Trajectory rdc乱编的做法 考虑贪心,每次会选择结束时间最早的. 设当前时间为 \(x\),那么可以区间有两类 a) \(l_i \leq x ...

  2. USACO2006 Backward Digit Sums /// 全排列 oj24212

    题目大意: 给出杨辉三角的顶点值M和底边数的个数 N (1 ≤ N ≤ 10) ,求出底边各个数的值,其中各个数范围都为1 ~ N 当N=4,M=16时可能是这样的   3   1   2   4  ...

  3. asp.net Core 使用redis(StackExchange.Redis)

    原文:asp.net Core 使用redis(StackExchange.Redis) 一.添加配置(appsettings.json) "Redis": { "Def ...

  4. Redis连不上的一些细节配置

    远程链接redis连不上,在确保防火墙设置正确的情况下 把redis.conf中的 bind 127.0.0.1注释 另外把protected-mode yes 改为protected-mode no

  5. myeclipe 中配置maven

    1.配置maven 2. 2

  6. 使用PyCharm创建Django项目及基本配置

    https://segmentfault.com/a/1190000011576316 pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间在使用pytho ...

  7. GetOpenFilename的基本用法(文件夹实操)

    Sub 数据导入()Dim f, arr, i&, j&, k, m%, n%, p%, sh As Workbookf = Application.GetOpenFilename(f ...

  8. yii2中使用定义在 params.php文件中的配置

    yii2 使用 配置文件中在 params 的配置, 可以用 Yii::$app->params['key1']形式访问 参考 yii can't access Yii::$app->pa ...

  9. phonegap 开发指南系列(3) ----在Eclipse中Android开发环境搭建

      前提条件:已在Eclipse中安装好Android SDK 和 ADT. 1.下载PhoneGap,解压. 2.用Eclipse新建一个安卓项目. 3.将phoneGap解压包里的Android文 ...

  10. kaptcha 实现验证码

    依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha< ...