Visual Studio新建项目时应该如何选择模板

雨婷大大_4293

雨婷大大_4293

2026-09-10

503人浏览

原创

控制台程序应选console application模板:它自动生成含int main()的main.cpp、链接console子系统、默认支持中文输出;若需完全自定义构建流程(如集成ninja、静态crt、屏蔽crt初始化),则必须选empty project。

visual studio新建项目时应该如何选择模板

选错模板不是“重来一次”那么简单——它可能让你在后续几天反复折腾编译错误、缺失引用、不兼容的 SDK 版本,甚至误入 MFC 或 ATL 的历史坑。关键不是“哪个看起来顺眼”,而是看清楚 main() 是否存在、WinMain() 是否被强制注入、项目是否自带 .vcxproj 还是只生成 CMakeLists.txt

控制台程序该用 Console Application 还是 Empty Project?

如果你只是跑算法、写工具脚本、验证某个 STL 行为,Console Application 是默认安全选择:它自动生成带 int main()main.cpp,链接 CONSOLE 子系统,输出窗口能正常显示中文(只要控制台编码匹配)。但如果你打算手动管理构建流程、集成 Ninja、或嵌入 Lua 解释器并完全屏蔽 CRT 初始化,那就必须选 Empty Project——它不生成任何源文件,也不预设 SubSystem,所有 linker 选项、预处理器定义、字符集都得你填。

  • Console Application 默认启用 /MD(动态链接 CRT),若需静态链接,得手动改 Configuration Properties > C/C++ > Code Generation > Runtime Library
  • Empty Project 不创建 main.cpp,右键项目 → “添加新项” → 选 C++ 文件(.cpp) 后,必须手写 int main(int argc, char** argv),否则链接时报 LNK2019: unresolved external symbol _main
  • 两者生成的 .vcxproj 文件结构不同:Console Application 包含 <configurationtype>Application</configurationtype><subsystem>Console</subsystem>Empty Project 则只有空壳,SubSystem 字段初始为空,不填会导致 Windows 下启动黑屏闪退

CMake Project 模板和传统 .vcxproj 项目根本不是一回事

CMake Project 模板不生成 .sln.vcxproj,只生成 CMakeLists.txt 和一个空 main.cpp。VS 后台调用的是本地安装的 CMake(而非 MSBuild),所以你改 Configuration Manager 里的平台没用——真正生效的是 CMakeSettings.json 里写的 configuration 数组。这个模板适合你已经习惯用 cmake -G "Visual Studio 17 2022" -A x64 命令行的人,或者团队要求统一用 CMake 管理跨平台构建。

Visual Studio Professional 18.8.1
Visual Studio Professional 18.8.1

Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。

下载
  • 若未安装 “CMake tools for Visual Studio” 工作负载,新建后会直接报错:CMake executable not found
  • 修改 CMakeLists.txt 后,VS 不会自动 reconfigure——必须点工具栏的 全部重新生成 或右键 CMake 根节点选 重新生成 CMake 缓存
  • 调试时断点可能不命中:因为 VS 默认用 launch.vs.json 启动,但 CMake 项目实际由 cmake --build 产物驱动,需确认 target 名与 executable 路径一致

Win32 GUI 项目别乱点 Windows Desktop Application

Windows Desktop Application 模板生成的是纯 Win32 API 窗口程序,入口是 WinMain(),消息循环、RegisterClassExCreateWindowEx 全都写好了。但它默认使用 Unicode 字符集 + 多字节混合模式(/utf-8 未启用),如果代码里硬写 L"Hello" 却忘了 #define UNICODE,编译会卡在 CreateWindowExW 找不到符号。更隐蔽的问题是:它默认关闭了 SDL checks(安全开发生命周期检查),而现代项目通常需要开启 /GS/guard:cf

  • 若你实际想用 WPF 或 WinForms,千万别选这个——它们属于 .NET 生态,对应模板是 WPF ApplicationWindows Forms App (.NET Framework),底层完全不碰 Win32
  • 若你勾选了 “使用 ATL” 或 “使用 MFC”,模板就变成 MFC Application,项目会引入大量宏和类库,stdafx.h 和预编译头机制会强制启用,关不掉
  • 该模板生成的资源文件(.rc)默认编码是系统 ANSI,遇到中文菜单或对话框文字,容易在非中文 Windows 上显示乱码,需手动把 .rc 文件另存为 UTF-8 with BOM

最常被忽略的一点:模板一旦选定,ProjectTypeTargetFramework(或 PlatformToolset)就锁死了。比如用 Console Application 创建的项目,默认 PlatformToolsetv143(VS 2022),但如果你后期想切到 v142(VS 2019),光改下拉菜单不行,还得手动编辑 .vcxproj 里所有 <platformtoolset></platformtoolset> 节点,否则构建时会静默降级失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1076

8

vscode和visualstudio对比分析
vscode和visualstudio对比分析

VSCode是一款轻量级代码编辑器,界面简洁,支持广泛的编程语言,适合个人开发者和小团队。而Visual Studio是一款全功能IDE,界面复杂但功能丰富,适合大型项目开发和团队协作,特别是面向.NET开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.04.01

2012

10

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

0

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

0

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

2026.09.21

0

17

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

2026.09.21

0

12

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

20

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Visual Studio 性能优化指南
Visual Studio 性能优化指南

共0课时 | 0人学习

Visual Studio 企业部署手册
Visual Studio 企业部署手册

共0课时 | 0人学习

Visual Studio 扩展开发指南
Visual Studio 扩展开发指南

共0课时 | 0人学习