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

使用vcpkg安装Live555遇std::atomic_flag::test报错,求C++20编译方案

解决Windows下vcpkg编译Live555时的C++20特性错误

问题根源

std::atomic_flag::test是C20新增成员,vcpkg默认编译Live555时未启用C20标准,导致MSVC v143无法识别该语法。修改VS项目属性无效是因为vcpkg编译依赖时使用独立的CMake构建流程,项目属性不会传递给vcpkg的编译环节。

解决方案

方法1:修改Live555的vcpkg Port配置

直接修改vcpkg中Live555的CMake配置,强制启用C++20:

  • 找到vcpkg的ports目录,路径通常为vcpkg\ports\live555
  • 打开该目录下的CMakeLists.txt,在project(LIVE555)语句后添加以下代码:
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
  • 重新执行安装命令,清理旧构建缓存:
    vcpkg install live555:x64-windows --clean-after-build
    

方法2:使用自定义Triplet指定C++20

通过自定义vcpkg triplet全局配置C++20标准,避免修改单个port:

  • 复制vcpkg triplets目录下的x64-windows.cmake,重命名为x64-windows-cpp20.cmake(路径:vcpkg\triplets)
  • 在新文件末尾添加以下配置:
    set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} /std:c++20")
    set(VCPKG_CMAKE_CONFIGURE_OPTIONS "${VCPKG_CMAKE_CONFIGURE_OPTIONS} -DCMAKE_CXX_STANDARD=20 -DCMAKE_CXX_STANDARD_REQUIRED=ON")
    
  • 使用自定义triplet安装Live555:
    vcpkg install live555:x64-windows-cpp20
    

额外说明:官方编译的ifaddrs.h问题

Windows系统原生不提供ifaddrs.h,官方Live555编译脚本未适配Windows平台,因此使用vcpkg是更可靠的方式——vcpkg的Live555 port已包含Windows平台的兼容性补丁,只需解决C++20标准配置问题即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:30:15