根本原因:

是因为单独包含了一些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 图形设备接口函数

最新文章

  1. H5+CSS3做图片轮播滚动效果
  2. 2014 NOIP 赛前自我整理提醒。
  3. android aidl 进程间通信需要注意的地方(android.os.TransactionTooLargeException)
  4. 现代软件工程 第七章 【MSF】练习与讨论
  5. 【criteria CascadeType】级联的不同情况
  6. string用法
  7. 用unity3d+cardboard开发一个全景图片查看器
  8. AngularJS快速入门指南01:导言
  9. 1、IIS常见的的问难及解决方法
  10. MediaInfo使用简介(新版本支持HEVC)
  11. javascript数字验证输入
  12. 《Windows驱动开发技术详解》之分层驱动程序
  13. lintcode.177 把排序数组转换为高度最小的二叉搜索树
  14. CCF-201412-3-集合竞价
  15. linux查看空间情况----df与du命令
  16. JavaScript 的 this 原理
  17. JVM CUP占用率过高排除方法,windows环境
  18. Angular 自定义过滤器
  19. vue @click 使用三目运算(实现动态更换绑定的函数)
  20. 重建索引解决mssql表查询超时的问题

热门文章

  1. 22-MySQL-Ubuntu-备份与恢复
  2. HTTP请求默认值
  3. 【leetcode题目整理】数组中找子集
  4. zepto(mark)
  5. [转]SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程【附源代码Demo】
  6. leetcode-17-电话号码的字母组合’
  7. js字符串去重复
  8. QT安装以及使用(QT支持linux和windows,也支持C/C++代码的编译运行,比vs简洁多)
  9. mysql的卸载重装+导入大量数据失败的解决方案+工具执行和项目执行结果不同
  10. 8种形式的Android Dialog使用举例