vs的安装

以安装Visual Studio Community2022版本为例

  1. 地址下载Visual studio安装向导程序
  2. 双击运行安装向导程序,勾选使用C++的桌面开发
  3. 设置安装路径
  4. 顺利的话安装完毕

visual studio与vc++编译器各个版本对应的关系

  1. VS2010:vc10
  2. vs2012:vc11
  3. vs2013:vc12
  4. vs2015:vc14
  5. vs2017:vc15
  6. vs2019:vc16
  7. vs2022:vc17

vs下常见项目的文件

  1. xxx.sln(sln全称solution)是解决方案文件,解决方案下可以有多个项目工程。查看其文件的内容可以观察这个项目由哪个版本的visual studio创建的。
  2. vcxproj或者vcproj是工程文件,本质上是一个xml文件

vs的工具设置项

  1. 文本编辑器显示行号
  2. 由于不同的文本编辑器对tab的解释不同,可能是两个空白字符也可能是4个。因此这里设置插入空格

vs的常用项目工程设置项

  1. 设置当前项目工程的配置类型,常见的类型有exe、lib、dll
  2. 设置依赖lib的方式
    1. 在源文件中使用#pragma comment(lib, "xxx.lib")
    2. 在项目=》属性=》VC++目录=》库目录中设置:最好使用相对路径,相对路径是相对于工程文件vcxproj来说的。
    3. 在项目=》属性=》链接器=》输入=》附加依赖项中设置
  3. 设置依赖头文件:和设置依赖lib一样,使用相对路径,相对于工程文件vcxproj
  4. vs开启多处理器编译:右击项目属性
  5. 设置当前项目工程编译后的二进制输出目录
  6. 设置当前项目工程生成中间文件的存放位置,例如.obj文件
  7. 宏定义
  8. 调试停止时自动关闭控制台

visual studio中的编码设置

1.单字符和宽字符
  1. 单字符:一个字节存储
  2. 宽字符:两个字节存储
2.宽字符相关的数据类型
  1. wchar_t:typedef unsigned short wchar_t;
wchar_t str[] = L"test";
cout << sizeof(str) << endl; // 10
3.单字符版本和宽字符版本的区分:
#ifdef _UNICODE
#define TEXT(x) L##x  // L##x=》L"x"
#else
#define TEXT(x) x
#endif
4.工程项目编码的选择
  1. 编码选择使用Unicode字符集,则表示使用宽字符
  2. 编码选择使用多字节字符集,则表示使用单字符使用1个字节存储。清楚这个很关键,在网络上收发包时需要注意
  3. 设置方式如下:

vs调试

1.基本调试快捷键
  1. 单步步过:F10
  2. 单步进入:F11
  3. 单步步出,不想执行完函数所有的语句可以从函数跳出:shift + F11
  4. 从一个函数断点跳到下一个函数断点执行:shift + F11
2.留意一些窗口
  1. 断点窗口
  2. 线程窗口
  3. 堆栈窗口
  4. Auto 窗口
  5. Local 窗口
  6. 内存窗口
  7. 反汇编窗口
  8. 监视窗口
  9. 输出窗口
3.断点的类型
  1. 普通断点
  2. 条件断点
  3. 数据断点
4.调试时传入参数

如何快速分析一个项目的程序结构

  1. 使用调试器将项目启动起来,然后中断下来
  2. 在线程窗口上过滤掉系统线程,逐个切换线程,查看各个线程的调用堆栈信息
  3. 了解各个线程在什么地方启动
  4. 清楚某些线程之间如何交换数据

VS常用快捷键

  1. CTRL + g:跳到文件的指定行
  2. vs中函数参数提示快捷键:ctrl + shift + space
  3. 代码注释:CTRL + K,CTRL + C
  4. 代码取消注释:CTRL + K,CTRL + u
  5. 运行(不调试)程序:CTRL + f5
  6. 调试运行程序:f5
  7. 逐过程:f10,不能进入函数内部
  8. 逐语句:f11,可以跳入函数内部
  9. 快速打开解决方案资源管理器:ctrl + alt + l

vs编译静态lib

  1. 现有一些源代码文件如下,需求是编译成静态lib
  2. 打开vs创建新项目,位置选择security目录所在的路径,模板类型选择lib
  3. 然后移除新建libsecurity项目下的文件。不要右击目录进行删除,这样做的话security.vcxproj中的配置项是没有清理干净的
  4. 将libsecurity项目下的四个文件复制到security目录下,并将libsecurity目录删除。目录调整结构如下
  5. 打开libsecurity.sln文件,右击头文件、源文件将需要编译的文件加进来
  6. 在项目属性页配置好输出目录、目标文件名。预编译头选择不使用
  7. 结果如下图所示,在输出目录下生成了security.lib,这个lib文件既包含声明,也包含实现

vs编译动态dll

  1. 和vs编译静态lib同理,模板类型选择dll
  2. 最终生成dll和lib文件,其中dll包含实现,lib包含声明。

将CMake管理的项目如何生成Visual Studio工程

libuv为例

  1. 安装CMake GUI工具
  2. 打开CMake GUI工具,设置源码目录以及构建目录
  3. 配置
  4. 点击Generate
  5. 打开构建目录下的libuv.sln解决方案文件