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

Qt6 Android项目升级NDK22到NDK25遇__nomerge__属性报错求助

NDK25升级后__nomerge__属性报错的解决配置

问题原因

这个错误源于NDK25新增了__nomerge__属性,但当前CMake配置未正确适配NDK25自带的高版本Clang编译器,导致旧编译器(或配置错误的编译器)无法识别该属性。

需调整的配置项

  • 强制使用NDK25自带的Clang编译器
    避免CMake调用系统或Qt自带的旧版本编译器,在CMakeLists.txt开头添加:

    set(CMAKE_C_COMPILER "${ANDROID_NDK}/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe")
    set(CMAKE_CXX_COMPILER "${ANDROID_NDK}/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe")
    
  • 更新C/C++标准版本
    NDK25对C++标准的支持更严格,确保配置符合编译器要求:

    set(CMAKE_C_STANDARD 11)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
  • 清理冲突的编译标志
    移除针对旧NDK添加的过时编译选项(比如手动指定的-std=c++11、与NDK25不兼容的-fno-xxx类标志),避免和新工具链的默认配置冲突。

  • 统一API Level配置
    确保ANDROID_PLATFORM变量与ANDROID_NATIVE_API_LEVEL保持一致,在CMakeLists.txt中明确设置:

    set(ANDROID_PLATFORM android-25)
    
  • 清理构建缓存
    删除项目根目录下的CMakeCache.txt和build文件夹,彻底清除旧NDK的缓存配置后重新构建。

额外检查

如果以上调整无效,确认Qt环境是否同步更新:

  • 在Qt Creator中,进入工具>选项>设备>Android,验证NDK路径已切换为NDK25
  • 确认Qt版本为6.2及以上(旧版Qt对NDK25的支持存在兼容性问题,需升级Qt)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:27:16