You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Visual Studio 2019中ARM64的Windows Kits相关编译错误?

解决ARM64迁移编译时系统头文件未定义函数的问题

针对你将X64项目迁移至ARM64后出现的InterlockedIncrement64、ReadNoFence8等系统头文件函数未定义的编译错误,可按以下步骤排查解决:

1. 确认平台工具集配置正确

右键项目 → 属性 → 配置属性 → 常规 → 平台工具集,选择v142 - Visual Studio 2019 (ARM64),确保未误选X64版本的工具集。

2. 检查预处理器宏定义

右键项目 → 属性 → 配置属性 → C/C++ → 预处理器 → 预处理器定义:

  • 确保包含_ARM64_或__arm64__宏(VS会自动为ARM64平台添加,若手动修改过配置可能丢失)
  • 排查是否错误添加了_X86_、_AMD64_等X64专属宏

3. 验证Windows SDK与工具集兼容性

  • 项目属性 → 配置属性 → 常规 → Windows SDK版本,确认选择的是10.0.22621.0(与报错中的SDK版本一致)
  • 打开VS安装器,检查**Windows SDK for Windows 10 (10.0.22621.0)**的ARM64组件是否已勾选安装

4. 排除自定义头文件/宏的干扰

  • 检查项目中是否存在自定义的winbase.h或winnt.h文件,避免覆盖系统头文件
  • 在项目主源文件最顶部优先包含<windows.h>,测试是否仍报错,排除其他自定义头文件的宏冲突

5. 清理编译缓存并重新生成

  • 删除项目目录下的obj、bin文件夹
  • 执行Build → Clean Solution,再选择Build → Rebuild Solution,清除X64编译残留的缓存文件

6. 调整C++/CLI配置(若项目为混合模式)

若项目使用C++/CLI:

  • 右键项目 → 属性 → 配置属性 → C/C++ → 所有选项 → 公共语言运行时支持,选择ARM64兼容的选项(如/clr),避免沿用X64专属的CLI设置

错误原因说明

这些系统头文件中的函数依赖平台专属预处理器宏展开定义,若ARM64平台的配置(工具集、宏、SDK)不正确,头文件会跳过这些函数的声明,即使项目未直接调用,也会因系统API内部的依赖触发编译错误。

内容的提问来源于stack exchange,提问作者r18ul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:32