当前位置: 首页 > news >正文

先说结论:C++/WinRT 不一定要专用模板

我一开始也在找“C++/WinRT 专用模板”,后来发现其实不必。
直接新建一个普通的 C++ 控制台项目也可以,只要工具链和链接配置正确。
推荐路线:

  1. 新建 Console App(C++)
  2. 平台选 x64
  3. C++ 语言标准至少 C++17,建议 C++20
  4. 加 WinRT 头文件
  5. 链接 WinRT 相关库

二、Visual Studio 配置位置

1. C++ 语言标准

项目 -> 属性 -> 配置属性 -> C/C++ -> 语言 -> C++ 语言标准
建议选择:
ISO C++20 标准
或至少 C++17
我之前踩过一个坑:命令行把 /std:c++20 打成了 /std:c+=20,结果所有报错都在提示“需要 C++17”,实际是参数写错了。

2. 链接库配置

项目 -> 属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项
添加两项:
windowsapp.lib
runtimeobject.lib

三、#pragma comment(lib, ...) 是什么?

这两行代码是给链接器下指令:

#pragma comment(lib, "windowsapp.lib") #pragma comment(lib, "runtimeobject.lib")

作用等价于你在“链接器 -> 输入 -> 附加依赖项”里手动添加库。
也就是说,这两种方式本质上都在做同一件事:告诉链接器去链接哪些库。
它们的关系

  1. 项目属性方式:配置集中在工程里,团队协作更直观
  2. pragma 方式:配置写在源码里,单文件示例更方便搬运
    建议
  3. 学习和示例阶段:pragma 很方便
  4. 团队项目:更推荐项目属性统一管理
  5. 两者二选一即可,避免重复维护

四、最小示例代码(可直接运行)

下面这段是我用于验证 C++/WinRT 环境是否正常的最小例子:

点击查看代码

如果输出了 Host 和 Path,说明环境已经通了。

五、逐行解释关键代码

  1. include 头文件
#include <winrt/base.h> #include <winrt/Windows.Foundation.h>
  1. winrt/base.h:C++/WinRT 基础类型和初始化能力
  2. winrt/Windows.Foundation.h:引入 Windows.Foundation 命名空间里的类型,比如 Uri
    注意大小写和拼写,Foundation 很容易拼错成 fundation,错一个字母就会报找不到头文件。
  3. 初始化线程单元
winrt::init_apartment(winrt::apartment_type::multi_threaded);

这一步是初始化 WinRT 运行环境(底层可理解为 COM Apartment 初始化)。
不初始化就直接调用 WinRT API,很多场景会出问题。

multi_threaded 的含义是使用多线程单元模式,控制台程序常用这个就够了。
3. 创建 Uri 对象

winrt::Windows::Foundation::Uri uri(L"https://learn.microsoft.com/zh-cn/windows");

这行代码就是在用 WinRT 的 Uri 类型解析地址。
后续可以直接取 Host、Path、Query 等属性,不需要自己手写字符串解析。

C++/WinRT 的优势(为什么值得学)

http://www.jsqmd.com/news/1093900/

相关文章:

  • 在线音视频处理工具,不上传文件的在线视频压缩工具!
  • 已经能自动发抖音了
  • 收不到WhatsApp验证码?别急着砸手机,这5个坑你肯定踩过
  • Python Web 项目使用 PyInstaller 打包为 Windows EXE 的常见问题与解决方法
  • Keil MDK 编译输出内存分段详解
  • 收藏!小白程序员必看:手把手教你搭建可评测的RAG大模型系统
  • ManageEngine卓豪-企业为什么需要AD域审计工具?
  • AI FDE培训:让AI从能演示,到能干活
  • 高活性浓缩洗衣液怎么选?两款家用高性价比品牌实测
  • 千匠智元AI斩获第八届创新发展论坛金i奖,领跑产业AI创新
  • 新160个CrackMe039-eKH.1、040-DaNiEl-RJ.1、041-genocide1逆向分析
  • AI 赋能训练推理平台 Java + SpringBoot MySQL Maven EasyAI FFmpeg支持人脸识别、门禁、人员入出检测、人员跌倒检测等功能 基于深度学习模型,可自定义训练数据
  • VSCode插件变黑客后门!GitHub 3800个仓库被攻破
  • 湖北工业大学《线性代数》期末试卷及答案2016-2024学年PDF
  • 【从0到1构建一个ClaudeAgent】协作-团队协议
  • 2026年智泊第23期AGI大模型应用开发实践班v6.0,智泊-最新AGI大模型全栈课12期|2025年9月
  • 提示词三要素:角色锚定、任务边界与输出契约
  • 文科生怎么转型科创赛道-硕士进修选择与交大MTT培养路径详解
  • 基于Appium与Python的拼多多百亿补贴商品价格自动化监控方案
  • 老板周五17:30丢了个网页让我“照着做一版“,这次我只用了3分钟
  • 2026 电子轴凹版印刷机方案制作逻辑,专业生产厂家国伟机械定制服务解读
  • 万维盈创 CCEP 持证扬尘(噪声)在线监测仪|建筑工地、道路扬尘、工业无组织排放合规监测优选设备
  • 企业微信双动作更新:5.0.9新版+企微AI大圆来了
  • CRMEB多商户系统(PHP)v4.1更新预告:年卡/月卡/多次体验卡,服务行业要锁客,就用它!
  • Python 字符串数组元素替换全攻略
  • GitHub导航菜单全解析:涵盖平台功能、解决方案、资源,探讨排除敏感文件方法
  • TI BOOSTXL-ULN2003驱动板实战:3/8引脚模式驱动步进电机与外围设备
  • IvorySQL 深度解析:融合 PostgreSQL 生态与 Oracle 兼容性的革新之路
  • 企业网络管理综合实训:CentOS7 纯终端完整部署 OpenStack IaaS 云平台(Keystone/Neutron/Cinder/Swift 全组件 + Dashboard 实操)
  • 北京蓝伟博达曾工实操:联想拯救者高负载蓝屏重启 显卡虚焊故障讲解