当前位置: 首页 > 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.gsyq.cn/news/1605854.html

相关文章:

  • 湖北工业大学《线性代数》期末试卷及答案2016-2024学年PDF
  • 【从0到1构建一个ClaudeAgent】协作-团队协议
  • IvorySQL 深度解析:融合 PostgreSQL 生态与 Oracle 兼容性的革新之路
  • 虚拟化技术中的容器编排资源隔离与性能优化
  • UDP Socket 回声服务代码全疑点深度手册:结构体本质・bind 内核逻辑・收发设计全拆解
  • 如何在Mac上配置OBS虚拟摄像头:终极完整指南
  • .text 段的内存和.rodata的内存区别
  • 2026年一键生成论文工具推荐
  • 跳出论文熬夜怪圈:okbiye 一站式 AI 毕业论文写作
  • 行为型模式:对象之间的默契配合
  • Selenium脚本性能优化实战:从等待策略到并行执行
  • Manim实现动态交点计算--从一个动点问题说起
  • 用 AI 一句话查 A 股数据,免费替代 Tushare(附完整教程)
  • 黄金短期有震荡筑底倾向
  • 数字隔离器与光耦合器:筑牢舞台表演机器人运行核心基石
  • 独立开发者如何使用 CSGClaw 管理复杂开发任务
  • 双向依赖同步机制
  • 2026最新智慧园区公司挑选攻略 帮你选出靠谱适配的合作服务商
  • 家庭防水验收标准:宝师傅分享验收要点
  • AIAgent
  • 扬州清宸康养180道菜不重样?真相究竟是怎样,快来一探究竟!
  • ModelEngine QA对生成技术:如何实现60%留用率的高质量训练数据
  • 好用的检测机DD马达哪家靠谱
  • GaussDB(DWS)数据仓库性能压测与调优实战:从0到1全记录
  • 【从0到1构建一个ClaudeAg _
  • 为什么建议中小企业优先考虑开源ERP
  • AI编码代理实战:从网站克隆到Next.js项目生成的工程化指南
  • AI 赋能接口自动化测试系列(一):接口文档智能解析Agent Skill推荐
  • OpenMontage:本地化AI视频全链路制作工具部署与实战指南
  • 计算机毕业设计之基于深度学习的花卉分类检测系统的设计与实现