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

Visual Studio 2019编译ARM64时出现"identifier not found"错误求助

问题原因

_InterlockedO64、ReadAcquire8、WriteRelease64这类标识符是x64/x86架构专属的编译器内置同步与内存屏障函数。ARM64的指令集、内存模型和x64差异明显,Visual Studio 2019针对ARM64并未提供这些同名的内置函数,因此编译ARM64目标时会触发“identifier not found”错误。

解决办法
  • 替换为ARM64兼容的内置函数
    微软编译器针对ARM64提供了等价的同步/内存操作函数,对应替换关系如下:

    • _InterlockedO64:大概率是代码笔误,x64下正确函数为_InterlockedOr64,ARM64同样支持该函数
    • ReadAcquire8:替换为ARM64的_ReadAcquire64(若操作的是8位数据,可使用_ReadAcquire8,需确认数据类型匹配)
    • WriteRelease64:ARM64下直接使用_WriteRelease64即可,该函数在ARM64平台受支持
  • 用条件编译区分架构
    在代码中通过预编译指令隔离不同架构的实现,避免跨平台编译冲突:

    #include <intrin.h> // 必须包含的头文件
    
    #ifdef _M_X64
    // x64专属实现
    _InterlockedOr64(&target_var, op_value);
    ReadAcquire8(&target_var);
    WriteRelease64(&target_var, new_value);
    #elif _M_ARM64
    // ARM64专属实现
    _InterlockedOr64(&target_var, op_value);
    _ReadAcquire64(&target_var);
    _WriteRelease64(&target_var, new_value);
    #endif
    
  • 检查编译配置与头文件

    • 确保所有使用这些函数的源文件都包含<intrin.h>,ARM64的内置同步函数依赖该头文件
    • 检查ARM64目标的项目属性:进入C/C++ -> 常规,确认“启用内置函数”选项处于开启状态
    • 若使用的是早期VS2019版本,建议更新到最新补丁,部分旧版本对ARM64内置函数的支持不完善

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:52:35