Visual C++ .NET(现在通常称为 C++/CLI 或 托管 C++)是微软的 C++ 开发工具,它结合了标准 C++ 的强大性能和 .NET 框架的便捷性(如自动内存管理、丰富的类库等)。

这份教程将从基础概念开始,逐步深入,并提供实践步骤。
第一部分:核心概念理解
在开始写代码之前,理解以下几个核心概念至关重要。
Visual C++ 的两种模式
这是最让人困惑的地方,但也是理解其精髓的关键。
| 特性 | C++ (Win32 / 原生 C++) | C++/CLI (.NET 托管 C++) |
|---|---|---|
| 目标平台 | Windows API, MFC, ATL | .NET Framework / .NET 5+ |
| 运行环境 | 直接编译为机器码,由操作系统执行 | 编译为中间语言,由 .NET 虚拟机 执行 |
| 内存管理 | 手动管理 (new / delete) |
自动管理 (垃圾回收器 GC) |
| 性能 | 极高,接近硬件 | 较高,但有 GC 带来的开销 |
| 互操作性 | 可以调用 .NET DLL,但复杂 | 无缝互操作,可以轻松混合使用 .NET 和原生代码 |
| 用途 | 游戏开发、驱动程序、高性能计算、系统级软件 | Windows Forms/WPF 桌面应用、.NET 库、包装现有 C++ 代码供 .NET 使用 |

- 如果你需要极致的性能,并且不介意手动管理内存,选择 C++ (Win32)。
- 如果你想利用 .NET 的便利性(如快速开发 UI、使用丰富的库),或者需要将现有 C++ 代码暴露给 .NET 世界,选择 C++/CLI。
第二部分:开发环境搭建
我们将使用目前的主流版本 Visual Studio 2025。
-
下载 Visual Studio 2025 Community 版
- 访问 Visual Studio 官网。
- Community 版是免费的,功能足够强大。
- 下载安装程序。
-
安装时选择工作负载
- 运行安装程序,确保勾选以下 工作负载:
- 使用 C++ 的桌面开发:这个工作负载包含了 C++ 编译器、标准库、Windows SDK 和用于开发原生桌面应用(如 Win32, MFC)的所有工具。
- .NET 桌面开发:这个工作负载包含了 .NET SDK、Windows Forms 和 WPF 模板,用于开发 .NET 桌面应用。
- 你也可以同时勾选两者,这样你就可以在同一个环境中同时开发原生 C++ 和 C++/CLI 项目。
- 运行安装程序,确保勾选以下 工作负载:
-
验证安装
(图片来源网络,侵删)- 安装完成后,打开 Visual Studio。
- 点击 "创建新项目"。
- 在搜索框中输入 "C++",你应该能看到 "空项目" 和 "Windows 桌面应用程序" 等模板。
- 再搜索 "C++/CLI",你应该能看到 "类库 (.NET Framework)" 或 "Windows 窗体应用 (.NET Framework)" 等模板,如果能看到,说明安装成功。
第三部分:基础入门教程
我们将从最简单的 "Hello, World!" 开始,分别用两种模式实现。
教程 1:第一个 C++/CLI 程序 (控制台应用)
这个程序将展示 C++/CLI 的基本语法和与 .NET 的交互。
-
创建项目
- 打开 Visual Studio,选择 "创建新项目"。
- 搜索并选择 "控制台应用" 模板。
- 重要:在筛选语言时,选择 C++,然后选择 "控制台应用 (.NET Framework)" 模板,这会创建一个 C++/CLI 项目。
- 给项目命名,
HelloCLI,然后点击 "创建"。
-
编写代码
-
Visual Studio 会自动生成一个
HelloCLI.cpp文件,内容大致如下:// HelloCLI.cpp #include "pch.h" // 预编译头文件 using namespace System; // 引入 .NET 的基础命名空间 int main(array<System::String ^> ^args) { Console::WriteLine("Hello .NET World from C++/CLI!"); return 0; }
-
-
代码解析
#include "pch.h":预编译头文件,可以提高编译速度。using namespace System;:C++/CLI 使用namespace关键字来引入 .NET 的命名空间。System是最核心的命名空间,包含了Console、String等基本类型。array<System::String ^> ^args:这是 C++/CLI 中数组的语法。^符号表示一个 "句柄",类似于 C# 中的 "引用" 或 Java 中的 "引用",指向托管堆上的对象。Console::WriteLine(...): 是 C++ 的作用域解析符,这里用于调用Console类中的静态方法WriteLine。
-
运行程序
- 按下
Ctrl + F5或点击工具栏上的 "开始执行(不调试)" 按钮。 - 你将在控制台窗口看到输出:
Hello .NET World from C++/CLI! 请按任意键继续. . .
- 按下
教程 2:创建一个简单的 Windows Forms (C++/CLI) 应用
这是 C++/CLI 最常见的用途之一:创建带图形界面的桌面应用。
-
创建项目
- "创建新项目" -> 搜索 "Windows 窗体应用" -> 选择 "Windows 窗体应用 (.NET Framework)" (语言筛选选 C++)。
- 命名项目为
MyFirstWinFormApp。
-
设计界面
- Visual Studio 会打开一个窗体设计器
MyForm [Design]。 - 从 "工具箱" (View -> Toolbox) 中拖拽一个
Button控件和一个Label控件到窗体上。 - 选中
Button,在 "属性" 窗口中将其(Name)改为clickMeButton,Text属性改为 "点击我"。 - 选中
Label,将其Text属性清空。
- Visual Studio 会打开一个窗体设计器
-
编写事件处理代码
- 双击设计器上的 "点击我" 按钮,Visual Studio 会自动切换到代码视图,并生成一个按钮点击事件的空函数。
- 在
clickMeButton_Click函数中添加代码:private: System::Void clickMeButton_Click(System::Object^ sender, System::EventArgs^ e) { label1->Text = "你好,C++/CLI!"; // 使用 -> 访问对象的成员 } ->:在 C++/CLI 中,通过句柄 (^) 访问对象成员时使用->,这与原生 C++ 的指针语法一致,便于记忆。
-
运行和测试
- 按
F5或点击 "开始调试"。 - 程序运行后,点击按钮,你会看到 Label 的文字发生了变化。
- 按
教程 3:第一个原生 C++ (Win32) 程序
这个程序不依赖 .NET Framework,直接调用 Windows API。
-
创建项目
- "创建新项目" -> 搜索 "空项目" -> 选择 "空项目" (确保语言是 C++)。
- 命名项目为
HelloNative。
-
添加源文件
- 在 "解决方案资源管理器" 中,右键点击 "源文件" -> "添加" -> "新建项"。
- 选择 "C++ 文件 (.cpp)",命名为
main.cpp。
-
编写代码
-
在
main.cpp中输入以下代码:#include <iostream> // C++ 标准输入输出流 #include <windows.h> // Windows API 头文件 int main() { // 使用 Windows API 弹出一个消息框 MessageBox( NULL, L"Hello Native C++ World!", // L 前缀表示宽字符字符串 L"消息", MB_OK | MB_ICONINFORMATION ); // 使用 C++ 标准库输出到控制台 std::cout << "This message is from the console." << std::endl; return 0; }
-
-
运行程序
- 按
Ctrl + F5。 - 你会看到一个 Windows 消息框,点击 "确定" 后,控制台窗口会显示 "This message is from the console."。
- 按
第四部分:进阶学习资源
掌握了基础后,你可以深入学习以下内容:
C++/CLI 进阶
- 托管类与值类型:学习如何定义可以被 .NET 垃圾回收器管理的类 (
ref class) 和值类型 (value class)。 - 属性:C++/CLI 提供了简洁的属性语法 (
property),类似于 C#。 - 事件:学习如何使用
event关键字在 .NET 世界中实现事件驱动。 - P/Invoke (平台调用):如何从托管 C++ 代码调用非托管的 DLL 导出函数。
- 反向 P/Invoke:如何将非托管函数指针作为委托传递给托管代码。
原生 C++ 进阶
- STL (Standard Template Library):学习 C++ 的标准库,如
vector,string,map,algorithm等,这是现代 C++ 的基石。 - 面向对象编程:深入类、继承、多态。
- Windows MFC (Microsoft Foundation Classes):一个用于构建 Windows 桌面应用的 C++ 类库。
- 多线程:使用 C++11/14/17 的
<thread>库或 Windows API 进行多线程编程。
推荐资源
- 微软官方文档:
- 书籍:
- 《Visual C++ 2010 入门经典》:虽然是旧版,但讲解 C++/CLI 和 MFC 的基础非常经典。
- 《C++ Primer》:学习 C++ 语言本身的圣经。
- 在线社区:
- Stack Overflow:遇到问题,首先搜索这里。
- MSDN 论坛:微软官方的技术论坛。
总结与建议
- 明确目标:先想清楚你要做什么,是做高性能计算?还是快速做个带界面的工具?或者封装旧代码?这决定了你使用 C++ 还是 C++/CLI。
- 从 C++/CLI 开始更容易上手:如果你有 .NET 背景(如 C#),C++/CLI 的语法和概念会更熟悉,能快速做出成果,建立信心。
- 不要害怕原生 C++:虽然 C++/CLI 很方便,但真正的 C++(现代 C++)能力是程序员的硬通货,建议在掌握 C++/CLI 后,一定要回头深入学习 STL 和现代 C++ 特性。
- 动手实践:教程看再多,不如自己动手写一个小项目,尝试做一个计算器、一个简单的文本编辑器,或者一个调用摄像头的小工具。
祝你学习顺利!
