当前位置: 首页 > article >正文

解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“

解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture”

报错原因

winnt.h中,不言而喻,一目了然:
在这里插入图片描述
代码节选:

#if defined(_AMD64_) || defined(_X86_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_) || defined(_ARM_) || defined(_ARM64_)

//
// TODO: WOWXX - Unblock ARM. Make all alignment checks DWORD for now.
//

#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif !defined(RC_INVOKED)
#error "No Target Architecture"
#endif

可见,在winnt.h的这段代码中,首先检测是否定义了_AMD64__X86_宏。若这两个宏均未定义,则进一步判断是否定义了_IA64__ARM__ARM64_宏。这5个宏定义代表了5种cpu架构,也就是报错信息中的“Architecture”。如果这些宏都未被检测到,就会报错"No Target Architecture"

解决方法

方法一:添加关于平台的宏定义

在项目属性中添加宏定义,对应你的电脑cpu架构。目前大家使用的Windows系统中最流行的是AMD64位架构,也就是_AMD64_,添加该定义即可。

方法二:正确地包含必要的头文件

在需要用到BYTE\BOOL等Windows平台特有宏或函数的地方直接包含Windows.h,尽量不要单独包含minwindef.hwinnt.hfileapi.hwinbase.hwindef.h等**非独立(not self-contained)**的头文件,例如不推荐:

#include<minwindef.h>
#include<windows.h>

推荐:

#include<windows.h>

即便要包含其他win-api相关头文件,也要放在#include<windows.h>语句之后,如不推荐:

#include<minwindef.h>
#include<fileapi.h>
#include<Windows.h>

推荐:

#include<Windows.h>
#include<minwindef.h>
#include<fileapi.h>

有的用户不喜欢包含Windows.h,认为它过于臃肿。那么可以在项目属性中添加宏定义WIN32_LEAN_AND_MEAN来去掉不常用的头文件(包括cryptography、DDE、RPC、Windows Shell、Winsock等),加速Windows.h的解析和后续编译过程。

扩展阅读

Windows.h中都有什么


http://www.kler.cn/a/469877.html

相关文章:

  • STM32U575按键转换及设备驱动
  • web实操9——session
  • 数据挖掘教学指南:从基础到应用
  • 关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)
  • 小于n的最大数 - 贪心算法 - C++
  • java中类的加载过程及各个阶段与运行时数据区中堆和方法区存储内容
  • python 操作xml文件
  • 5G工业路由器品牌,5G赋能,重塑工业路由器新标杆
  • LabVIEW项目如何选择数据库
  • 【shell编程】报错信息:Redirection Error(包含7种解决方法)
  • 【记录】Angr|Angr 的 call_state 是怎么保证不同架构的函数的参数正常传递进去的?
  • 古玩玉器交易系统|Java|SSM|VUE| 前后端分离
  • 云服务器+docker配置Java程序运行环境
  • VUE3组合式——响应式数据ref、reactive
  • Javascript算法——贪心算法(一)
  • jupyter出现“.ipynb appears to have died. It will restart automatically.”解决方法
  • 函数指针的用法
  • 反射能做什么
  • php Yii2 Excel导出图片资源到表格
  • WebAssembly(WASM) + Python: 构建高性能跨平台Web应用
  • 自定义校验注解
  • 文件上传漏洞 (网络安全)
  • Pytest 接口关联
  • 肘部法则确定聚类数
  • nginx: [emerg] host not found in upstream “host.docker.internal“
  • MPLS动态LSP配置实验