在C++项目中使用Windows::Devices命名空间需安装哪些依赖?
Windows::Devices 命名空间编译报错解决方案
前置依赖检查
- 打开Visual Studio Installer,找到对应VS版本点击「修改」,确认已安装对应版本的Windows 10 SDK(10.0.10240.0及以上)或Windows 11 SDK,未安装的话勾选对应组件完成安装即可,该命名空间属于Windows SDK自带的WinRT API,无需额外第三方依赖。
按项目类型配置
场景1:UWP / WinUI 3 桌面项目
C++/CX 项目
- 右键项目打开属性页,依次进入「配置属性 > C/C++ > 常规」,将「使用Windows运行时扩展」选项设置为是(/ZW)
- 代码中直接添加
using namespace Windows::Devices;即可正常编译,用到蓝牙相关API还可按需引入子命名空间using namespace Windows::Devices::Bluetooth;
C++/WinRT 项目
- 右键项目管理NuGet包,确认已安装Microsoft.Windows.CppWinRT包,版本与你的目标Windows SDK版本匹配
- 代码中在声明命名空间之前先引入对应头文件:
#include <winrt/Windows.Devices.h> // 用到蓝牙功能需额外引入 #include <winrt/Windows.Devices.Bluetooth.h> using namespace winrt::Windows::Devices;
场景2:传统Win32 桌面项目
- 先通过NuGet安装Microsoft.Windows.CppWinRT包
- 打开项目属性页,进入「配置属性 > 常规」,将目标平台版本设置为10.0.17763.0及以上
- 引入对应头文件后声明命名空间即可正常调用WinRT API
提示:无需引入完整的Windows::Devices命名空间,按需引入子命名空间可有效减少编译耗时。
内容的提问来源于stack exchange,提问作者David Lee
相关产品推荐
相关产品推荐

