资讯动态

VS2019 C++开发环境配置全攻略:从安装、空项目到常见坑

发布时间:2026/9/19 16:36:08 来源:尧图企业网站定制
简介面向Visual Studio 2019初学者的超详细安装与处理技巧PDF教程重点解决从下载安装到首次创建项目、编写代码过程中常见报错与配置问题。资源将安装流程拆解为官网下载安装包、选择安装位置、配置语言包、创建空项目与源文件等步骤并针对VS2019不支持C万能头文件、scanf等不安全函数报错、字符集设置、SDL检查等典型场景给出具体处理方法读者可按照图文对照逐步操作适合刚接触VS2019或希望提升开发环境配置效率的开发者。资源为单个PDF文档大小仅1.2MB内容集中便于快速查阅已有4384人学习。通过这份材料读者不仅能完成VS2019的完整安装与验证还能掌握多字节字符集设置、关闭SDL检查、解除C头文件绑定等实用技巧规避卸载不彻底或路径不当带来的后续问题顺畅运行C/C程序。1. 为什么 VS2019 到今天仍值得装Visual Studio 2019 是很多人第一次接触 Windows 桌面开发时装的第一个 IDE但它的安装过程远没有双击下一步那么简单。一个常见现象是装完 VS2019 后写个 hello world 都报错原因多半不是代码问题而是组件没选对、项目类型建错、字符集不匹配这三件事。VS2019 的安装器本质是一个组件分发器它先把几十 GB 的安装包拆成按工作负载Workload组织的最小集合再由你决定装哪一组。理解这一点安装就不容易翻车。这篇内容面向两类人一类是刚接触 C/C、需要把环境一次装好的初学者另一类是在新机器上反复装 VS2019、想弄清安装器到底做了什么、哪些报警可以安全关掉的开发者。全文 4000 余字先讲安装器和组件选择逻辑再依次处理空项目创建、安全函数误报、字符集和 SDL 检查最后聊一聊配置文件与彻底卸载的验证方法。2. VS2019 安装器的工作逻辑与组件取舍2.1 下载引导器vs_community.exe 不是安装包本体VS2019 官网下载到的 vs_community.exe 体积只有几 MB它是一个引导程序Bootstrapper并不是完整的离线安装包。点击它之后安装器会先自我解压然后按你勾选的工作负载去微软服务器拉取真正的组件包。这就是为什么在线安装 VS2019 的时间长短完全取决于你勾了多少东西——只装 C 桌面开发和全选所有组件下载量可能差出 20 GB 以上。如果你需要离线安装包常见做法是在微软官网的视觉工作室下载页选择下载离线安装包选项或者在命令行用--layout参数预先拉取组件。一个我常用的命令是vs_community.exe --layout D:\vs2019_offline --add Microsoft.VisualStudio.Workload.NativeDesktop --lang zh-CN该命令会在D:\vs2019_offline目录下生成完整的离线组件缓存之后拷贝到无网机器上双击同一目录下的 vs_community.exe 即可实现离线安装。--layout指定缓存目录--add指定要预取的工作负载--lang限定语言包。需要注意离线包一旦生成组件集合就固定了后续想补装组件还得重新联网拉取所以在生成离线包时宁可多勾几个负载也不要省空间。2.2 工作负载与单个组件的取舍进入安装器主界面后默认展示的是工作负载选项卡它不是让你按功能点选组件而是按开发场景打包的一整套工具链。常见做法是只勾选使用 C 的桌面开发这一个工作负载就包含 MSVC 编译器、Windows SDK、C CMake 工具、测试工具等核心组件足以覆盖 C/C 控制台程序、Win32 桌面应用和绝大多数算法题场景。工作负载包含的核心内容磁盘占用参考适用场景使用 C 的桌面开发MSVC 编译器、Windows SDK、C 调试器约 8–12 GBC/C 控制台、Win32、MFCASP.NET 和 Web 开发.NET Framework、IIS Express、JavaScript 工具约 5–8 GBC# Web 项目Python 开发Python 解释器、Django 支持、交互式窗口约 3–6 GB需要 IDE 内写 Python通用 Windows 平台开发UWP 工具链、模拟器、XAML 设计器约 10 GB 以上只做 UWP 再勾只为了写 C/C 的话其他工作负载一概不用碰。至于单个组件选项卡新手很容易在这里把各种 SDK、库全勾上实际上完全没必要——在工作负载之外额外需要的东西极少通常只有两种情况一是想用 Clang 工具链二是要做 Linux C 远程开发。其余组件勾了只会拉长安装时间对日常使用毫无帮助。2.3 语言包与安装位置的选择依据语言包这块默认只勾简体中文即可。但有个细节值得注意安装器界面语言和 IDE 菜单语言不是一回事如果你在安装时选了简体中文装完后想体验英文界面可以以后在工具 → 选项 → 环境 → 国际设置里切换不需要重装。多勾语言包的唯一作用是让同一个安装目录支持多种界面语言实用价值不大。简体中文包的翻译质量在 VS2019 上已经很成熟术语稳定不影响查文档。安装位置方面系统默认装在 C 盘。如果你 C 盘空间紧张可以改到 D 盘但代价是每次启动的加载速度会有小幅下降因为 C 盘通常是 NVMe SSD 所在盘。我一般建议默认安装因为 VS2019 的缓存目录%LOCALAPPDATA%\Microsoft\VisualStudio和 NuGet 全局包目录不受安装位置影响改安装目录省下的空间有限反而可能引入权限问题——比如装在 D 盘后 Windows SDK 找不到默认路径需要手动配置环境变量。空间实在不够时优先清理 C 盘临时文件而不是移动 VS 安装目录。3. 空项目创建、.cpp 后缀与 x86/x64 选择3.1 创建项目的完整路径与关键检查点安装完成后第一次启动会经过账户登录、主题选择、开发设置初始化三个阶段。主题建议直接选深色后面可以在工具 → 选项 → 环境 → 常规→ 颜色主题里随时改不必纠结。开发设置选Visual C它会预设好 C 相关的窗口布局和快捷键对新手比较友好。创建第一个项目的入口是文件 → 新建 → 项目在创建窗口里搜空项目选中后点下一步。这里有一个很多人踩过的坑模板搜出来的结果里有空项目和控制台应用两个选项前者创建的是完全空白的工程后者会自动生成一个带 main 函数的 .cpp 文件和一个 pch.h 预编译头框架。建议直接用控制台应用它能省去后面手动添加源文件的步骤而且预编译头的配置也是默认就启用的。项目创建完成后在解决方案资源管理器里右键源文件文件夹 →添加→新建项选择 C 文件.cpp。注意对话框底部有一个名称输入框默认扩展名是 .cpp但如果你改文件名时把扩展名一并改成了 .cVS2019 会把它当作 C 文件编译后面你写的 C 语法比如//注释在 C89 里不合法就会报一堆莫名其妙的问题。正确的做法是只输入文件名扩展名保持 .cpp 不变。3.2 代码示例与编译运行验证把下面这段代码完整输入到新建的 .cpp 文件里然后按 CtrlF5 编译运行#include iostream int main() { std::cout Hello VS2019 std::endl; for (int i 1; i 5; i) { std::cout line i std::endl; } return 0; }#include iostream是 C 标准输入输出流头文件main()是程序入口std::cout是标准输出流对象std::endl输出换行并刷新缓冲区。这段代码编译通过说明工具链基本正常如果连这个都报错先检查是否选对了项目类型——控制台应用和空项目在链接子系统上有区别空项目需要手动在链接器 → 系统 → 子系统里设置为控制台否则运行时会闪现一个黑框就退出或者出现无法解析外部符号的错误。编译运行在调试菜单里常用按钮有两个F5 开始调试CtrlF5 开始执行不调试。新手建议先用 CtrlF5因为 F5 会在程序退出时停留在调试状态容易让学生误以为程序卡死了。3.3 x86 与 x64 平台的选择逻辑VS2019 默认的平台配置可能显示为 x86 或 x64具体取决于创建项目时的选项。这里有个容易混淆的点解决方案平台Solution Platform和项目平台Project Platform是两个层级。你可以在工具栏的解决方案平台下拉框里看到的 x86/x64只决定当前要构建的目标架构不影响 IDE 本身是 32 位还是 64 位程序。平台内存地址宽度适用场景注意点x8632 位课程设计、竞赛题目、旧版库依赖指针 4 字节结构体对齐规则不同x6464 位生产环境、大内存应用、现代库默认使用 x64 工具集部分旧库需要重新编译对初学者而言算法题和控制台程序选 x86 还是 x64 差别不大。但如果你在学校里用的一些第三方库比如 freeglut、OpenCV 3.x只编译了 x86 版本那你的项目就必须选 x86否则链接阶段会报找不到 .lib 文件。反之如果你的代码要处理大于 2 GB 的内存数据就必须切到 x64。切换方法是生成 → 配置管理器在活动解决方案平台里新建或切换到 x64。切换后如果编译报错找不到 Windows SDK 版本回到项目属性 → 常规 → Windows SDK 版本选一个本机已安装的版本即可。4. 安全函数误报、SDL 检查与字符集处理4.1 scanf 与 scanf_s 的报错机制VS2019 默认启用了 SDLSecurity Development Lifecycle检查它的一个直接表现是你写scanf()、strcpy()、strcat()这类函数时编译器会报 C4996 错误提示你改用带_s后缀的安全版本。这个设计的本意是强制你用带边界检查的函数但对只写算法题的场景这个报错纯属噪音。处理方式有三种按推荐程度排列第一把scanf改写为scanf_s这也是 VS 官方推荐的方案第二在源文件顶部加宏定义豁免告警第三直接关闭 SDL 检查。第三种方法不推荐全局使用因为 SDL 检查还能帮你抓缓冲区溢出这类潜在 bug全关掉会影响后续真实项目的开发习惯。我一般建议前两种——写课程设计时用scanf_s并不费事但如果你在刷算法题时频繁复制网上代码那在项目属性里关掉 SDL 反而更高效。4.2 关闭 SDL 检查的完整路径如果你的代码里大量使用了scanf、strcpy等函数且你不想逐个改写关闭 SDL 检查是最直接的方案。操作路径是右键项目 → 属性 → C/C → 常规 → SDL 检查把下拉选项从是 (/sdl)改为否。注意这个选项只在项目属性里存在如果你改的是解决方案属性是找不到这一项的。需要注意SDL 检查关闭后编译错误 C4996 会消失但 VS 的 IntelliSense智能感知可能还会在编辑器中用红色波浪线标出scanf。这是因为 IntelliSense 引擎和编译器是两个独立组件前者不会即时读取你的项目属性。遇到这种情况不用管直接编译就能通过或者重启 VS 后波浪线会消失。#define _CRT_SECURE_NO_WARNINGS #include cstdio int main() { char name[20]; scanf(%s, name); printf(hello %s\n, name); return 0; }这段代码首行的#define _CRT_SECURE_NO_WARNINGS必须在所有#include之前它告诉预处理器屏蔽掉 C4996 告警的生成。使用这个宏和关闭 SDL 检查的效果基本一致但作用域只限当前源文件。如果你有多个 .cpp 文件都用到scanf可以在项目属性 → C/C → 预处理器 → 预处理器定义里加上_CRT_SECURE_NO_WARNINGS1这样整个项目都生效免去每个文件都加宏定义的麻烦。4.3 字符集多字节字符集与 Unicode 的抉择VS2019 的项目属性里有一个字符集选项默认是使用 Unicode 字符集。当你在代码里写字符串字面量时Unicode 模式下它会被解释为宽字符类型宽字符数组而在多字节字符集MBCS模式下则是窄字符。二者混用最常见的报错就是无法从 const char* 转换为 LPCWSTR或者cannot convert parameter 1 from const char [6] to LPCWSTR。出现这类报错的常见场景是你在代码里直接给 Win32 API 传字符串参数比如MessageBox(0, hello, title, 0); // 在 Unicode 模式下直接报错解决方式有两种一种是把项目字符集改为使用多字节字符集这样所有 Win32 API 的字符型参数都默认走窄字符路径MessageBox等函数会映射到MessageBoxA另一种是保持 Unicode 字符集把字符串字面量前加L前缀即Lhello让它变成宽字符字面量。我建议日常 C/C 学习一律用多字节字符集省心且与教材、博客中的绝大多数示例代码一致只有做真正的 Windows GUI 项目时才需要考虑 Unicode因为 NT 系列系统内核本来就是 Unicode。5. 项目配置文件与 VS2019 彻底卸载验证5.1 读透 .vcxproj 文件一次搞清楚所有配置项新建任意一个 VS2019 C 项目目录下都会出现一个 .vcxproj 文件它是 MSBuild 格式的 XML 项目文件。你在属性面板里做的所有修改最终都会写进这个文件里。比如你刚才关闭了 SDL 检查、修改了字符集用记事本打开 .vcxproj会看到类似下面的内容PropertyGroup LabelGlobals ProjectGuid{xxxx-xxxx-xxxx}/ProjectGuid KeywordWin32Proj/Keyword WindowsTargetPlatformVersion10.0/WindowsTargetPlatformVersion /PropertyGroup ItemDefinitionGroup Condition$(Configuration)|$(Platform)Debug|x64 ClCompile WarningLevelLevel3/WarningLevel SDLCheckfalse/SDLCheck ConformanceModetrue/ConformanceMode PreprocessorDefinitions_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)/PreprocessorDefinitions /ClCompile /ItemDefinitionGroupCondition属性里Debug|x64表明这一组配置只对 Debug 配置、x64 平台生效SDLCheck对应属性面板里的 SDL 检查开关false 就是关闭PreprocessorDefinitions里的_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)是你添加的预处理器定义%(...)是 MSBuild 的列表追加语法表示保留继承自上一级配置的默认定义。理解这一点你就能在不打开 VS 的情况下直接修改项目文件这在批量修改多个项目配置时非常有用。另外一个值得关注的文件是 .sln解决方案文件它只记录项目之间的引用关系和配置映射不存放任何编译参数。.sln 文件可以通过Build菜单里的配置管理器调整各项目的构建顺序和平台映射。如果别人发给你一个 VS2019 项目你打开后提示需要升级或平台工具集不匹配大概率是对方用的是 v142 工具集而你机器上只有 v143对应 VS2022可以在项目属性 → 常规 → 平台工具集里切换回 v142前提是你安装了 VS2019 的 C 组件。5.2 卸载 VS2019 的正确方式与残留验证VS2019 不能像普通软件一样在控制面板 → 程序和功能里直接卸载。正确做法是重新运行之前的 vs_community.exe 安装程序在安装界面左下角点击卸载按钮然后勾选所有已安装的组件后执行卸载。这个卸载过程会调用专门的清理器移除注册表项、安装缓存和 Vsix 扩展。卸载完成后还需要手动检查两个位置一是%ProgramData%\Microsoft\VisualStudio\Packages目录里面是组件下载缓存如果残留会在下次安装时造成版本冲突二是%LocalAppData%\Microsoft\VisualStudio下的 16.0 配置目录VS2019 的内部版本号是 16.x。验证是否彻底卸载可以在命令行执行where MSBuild如果输出路径包含Visual Studio\2019说明还有残留组件在 PATH 环境变量里正常情况下where MSBuild应该找不到任何结果因为 MSBuild 默认不加入 PATH。另外可以检查程序和功能列表中是否还有Visual Studio Community 2019字样——如果还存在说明卸载步骤没走完重新运行安装器再卸一次即可。关于不要随便删除 VS的提醒我补充一个验证过的细节有人想通过直接删除 C:\Program Files\Microsoft Visual Studio 2019 目录来卸载这种操作会留下上千个注册表项和 Vsix 扩展缓存下次重装时经常弹出检测到先前安装的实例或无法安装到同一路径的提示。如果已经发生了这种情况用微软官方提供的 VisualStudioUninstaller 工具清扫注册表是最后手段但耗时很长所以在动手删目录之前一定先走安装器自带的卸载流程。5.3 代码格式化与主题配置的进阶应用最后一个实用技巧VS2019 的代码格式化框架使用 ClangFormat但默认只对 C/C 启用一部分规则。你可以在工具 → 选项 → 文本编辑器 → C/C → 代码风格 → 格式设置里调整缩进、括号换行规则或者创建一个 .clang-format 文件放到项目根目录VS2019 会自动读取它。常见的 .clang-format 配置片段是BasedOnStyle: Google IndentWidth: 4 BreakBeforeBraces: Allman AllowShortFunctionsOnASingleLine: Empty这段配置意思是以 Google 风格为基准缩进改为 4 个空格大括号换行Allman 方式空函数允许单行显示。加入这个文件后VS2019 每次按 CtrlK、CtrlD 格式化时都会按你的规则调整代码而不是使用 IDE 默认的微软风格。对于从其他 IDE比如 Dev-C 或 CodeBlocks转过来的用户这一招能最快消除代码风格不适应带来的割裂感。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价