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

在AMD64主机编译ARM64版OpenCV时遇Error C1189问题求助

在Windows x64主机交叉编译ARM64版本OpenCV时遇到C1189错误的解决方法

问题概述

在Windows x64(AMD64)主机上使用Visual Studio 2022编译ARM64版本OpenCV 4.5.4时,反复触发以下错误:

fatal error C1189: #error: This header is specific to X86, X64, ARM64, and ARM64EC targets

根源是预处理器未正确定义_M_ARM64宏,尽管已经通过vsdevcmd -arch=arm64 -host_arch=amd64配置环境,且CMake指定了-A ARM64参数。

问题分析

从CMake输出的-- Detected processor: AMD64可以看出,CMake可能误判了目标架构;同时编译过程中部分环节未正确传递ARM64编译参数,导致编译器未自动注入_M_ARM64宏。手动设置CL变量的尝试未生效,大概率是因为CMake生成工程时覆盖了相关配置。

解决步骤

1. 确保VS开发环境完全生效

  • 关闭所有终端窗口,重新打开管理员权限的终端,执行:
    vsdevcmd -arch=arm64 -host_arch=amd64 -no_logo
    
  • 验证环境变量:执行echo %CL%,确认输出包含/D_M_ARM64=1;如果没有,手动补充:
    set CL=/D_M_ARM64=1 %CL%
    

2. 修正CMake参数格式

原脚本中CMAKE_GENERATOR_OPTIONS的引号格式存在问题,导致CMake无法正确解析生成器选项,修改变量设置如下:

set "CMAKE_GENERATOR_OPTIONS=-G "Visual Studio 17 2022""
set "CMAKE_ARCHITECTURE=-A ARM64"
set "CMAKE_OPTIONS=-DBUILD_PERF_TESTS:BOOL=OFF -DBUILD_TESTS:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DWITH_CUDA:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF -DINSTALL_CREATE_DISTRIB=ON -DBUILD_opencv_java=OFF -DBUILD_opencv_python=OFF -DBUILD_PROTOBUF=OFF -DBUILD_opencv_dnn=OFF"

3. 强制指定ARM64编译器

在CMake命令中显式指定C/CXX编译器路径,避免CMake误选x64版本:

cmake .. %CMAKE_GENERATOR_OPTIONS% %CMAKE_ARCHITECTURE% %CMAKE_OPTIONS% ^
-DCMAKE_C_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/Hostx64/arm64/cl.exe" ^
-DCMAKE_CXX_COMPILER="C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.37.32822/bin/Hostx64/arm64/cl.exe"

注意替换路径为你实际的VS版本对应的编译器路径。

4. 强制注入_M_ARM64宏

在CMake选项中添加编译参数,强制注入目标架构宏:

set "CMAKE_OPTIONS=-DBUILD_PERF_TESTS:BOOL=OFF ... -DCMAKE_CXX_FLAGS="/D_M_ARM64=1" -DCMAKE_C_FLAGS="/D_M_ARM64=1""

5. 清理残留配置后重新构建

彻底清理旧build目录,避免残留配置干扰:

rmdir /s /q opencv-4.5.4\build
mkdir opencv-4.5.4\build
cd opencv-4.5.4\build

重新执行CMake生成和编译命令。

验证

重新编译后,检查CMake输出是否包含目标架构为ARM64的提示,且编译过程中不再出现_M_ARM64未定义的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:28:15