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

使用vcpkg安装etcd-cpp-apiv3后运行项目遇pplx报错求助

问题:etcd-cpp-apiv3依赖pplx编译报错(_ASSERTE未定义)

环境与配置

  • 系统:Windows 64位
  • 开发环境:CLion
  • 依赖安装:通过vcpkg执行vcpkg install etcd-cpp-apiv3:x64-windows完成etcd-cpp-apiv3库安装
  • CMake配置:
set(VCPKG_ROOT "C:/vcpkg")
set(VCPKG_TARGET_TRIPLET "x64-windows")
set(CMAKE_TOOLCHAIN_FILE "C:/vcpkg/scripts/buildsystems/vcpkg.cmake")
set(CMAKE_PREFIX_PATH "${VCPKG_ROOT}/installed/x64-windows")

include_directories(${CMAKE_PREFIX_PATH}/include)
find_package(etcd-cpp-api CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE etcd-cpp-api)

问题现象

项目可正常识别#include <etcd/Client.hpp>语句,但编译时出现大量来自vcpkg安装目录下pplx头文件的报错,核心报错示例:

C:/vcpkg/installed/x64-windows/include/pplx/pplxtasks.h:2877:21: error: '_ASSERTE' was not declared in this scopeIn main
C:/vcpkg/installed/x64-windows/include/pplx/pplxtasks.h:222:104: note: in definition of macro 'PPLX_CAPTURE_CALLSTACK' 222 | #define PPLX_CAPTURE_CALLSTACK() ::pplx::details::_TaskCreationCallstack::_CaptureSingleFrameCallstack(_ReturnAddress())
C:/vcpkg/installed/x64-windows/include/pplx/pplxtasks.h: In instantiation of 'pplx::details::_Task_completion_event_impl<_ResultType>::~_Task_completion_event_impl() [with _ResultType = unsigned char]':

已尝试的无效操作

  • 手动添加pplx库链接
  • 删除CMake输出目录并重新生成
  • 重装vcpkg及所有依赖
  • 检查vcpkg路径与系统环境变量

解决思路

  1. 补充Windows CRT依赖:_ASSERTE是Windows CRT的断言宏,需确保编译时引入<crtdbg.h>。可通过CMake全局配置强制定义相关宏:
target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS)
target_include_directories(${PROJECT_NAME} PRIVATE ${VCPKG_ROOT}/installed/x64-windows/include)

也可在项目主头文件中直接包含<crtdbg.h>。

  1. 修正pplx编译宏定义:pplx库在vcpkg中的编译可能缺失Windows版本宏,尝试修改vcpkg中pplx的portfile.cmake,添加-D_WIN32_WINNT=0x0601(对应Windows 7及以上),确保CRT功能正常启用。

  2. 切换到MSVC工具链:CLion默认可能使用MinGW,但etcd-cpp-apiv3与pplx对MSVC支持更完善。在CLion中配置Toolchain为Visual Studio,重新生成CMake项目后编译。

  3. 显式链接pplx库:确保CMake正确识别pplx的配置文件,在CMake中添加:

find_package(pplx CONFIG REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE etcd-cpp-api pplx)
  1. 降级etcd-cpp-apiv3版本:当前版本可能存在依赖兼容性问题,尝试安装旧版本,例如:vcpkg install etcd-cpp-apiv3:x64-windows --version=0.1.5(版本号可根据vcpkg可用列表调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:01:13