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

编译ble-win-cpp添加CppWinRT后WinRT库引入失效如何解决

编译配置解决方案
  1. 清理冗余NuGet包
    首先卸载你手动添加的Microsoft.Windows.CppWinRT NuGet包,原项目依赖的CppWinRT版本与高版本NuGet包不兼容:高版本CppWinRT移除了winrt::impl::wait_for私有API是第一个报错的根源,额外安装的NuGet包还会触发头文件路径冲突,直接导致WinRT头文件引入失效。
  2. 调整基础项目配置
    • 右键项目打开属性面板,在「常规」选项卡,将目标平台版本修改为10.0.19041.0或更高的兼容Windows SDK版本,平台工具集选择当前VS对应的版本,比如VS2022选v143、VS2019选v142
    • 切换到「C/C++→常规」选项卡,检查附加包含目录,删除多余的第三方CppWinRT头文件路径,保留项目自带的路径优先级
  3. 修复头文件语法错误
    你提供的引入语句中存在多余空格,会直接导致头文件查找失败,修正为如下格式:
    #include <winrt/Windows.Foundation.h>
    #include <winrt/Windows.Devices.Bluetooth.h>
    #include <winrt/Windows.Devices.Enumeration.h>
    #include <winrt/Windows.Devices.Bluetooth.Advertisement.h>
    #include <winrt/Windows.Devices.Bluetooth.GenericAttributeProfile.h>
    #include <winrt/Windows.Storage.Streams.h>
    
  4. 启用C20标准
    打开属性面板的「C/C
    →语言」选项,将C语言标准设置为「ISO C20 标准(/std:c20)」,WinRT异步接口依赖C20协程特性支持。
  5. 配置链接器依赖
    切换到「链接器→输入」选项,在附加依赖项中添加windowsapp.lib,这是WinRT程序的默认系统依赖库。
  6. 全量重新生成
    先执行「清理解决方案」操作,再执行「生成解决方案」,避免增量编译的缓存文件干扰编译结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 07:24:03