目录vs的安装visual studio与vc++编译器各个版本对应的关系vs下常见项目的文件vs的工具设置项vs的常用项目工程设置项visual studio中的编码设置1.单字符和宽字符2.宽字符相关的数据类型3.单字符版本和宽字符版本的区分:4.工程项目编码的选择vs调试1.基本调试快捷键2.留意一些窗口3.断点的类型4.调试时传入参数如何快速分析一个项目的程序结构VS常用快捷键vs编译静态libvs编译动态dll将CMake管理的项目如何生成Visual Studio工程
vs的安装
以安装Visual Studio Community2022版本为例
在地址下载Visual studio安装向导程序
双击运行安装向导程序,勾选使用C++的桌面开发
设置安装路径
顺利的话安装完毕
visual studio与vc++编译器各个版本对应的关系
VS2010:vc10
vs2012:vc11
vs2013:vc12
vs2015:vc14
vs2017:vc15
vs2019:vc16
vs2022:vc17
vs下常见项目的文件
xxx.sln(sln全称solution)是解决方案文件,解决方案下可以有多个项目工程。查看其文件的内容可以观察这个项目由哪个版本的visual studio创建的。
vcxproj或者vcproj是工程文件,本质上是一个xml文件
vs的工具设置项
文本编辑器显示行号
由于不同的文本编辑器对tab的解释不同,可能是两个空白字符也可能是4个。因此这里设置插入空格
vs的常用项目工程设置项
设置当前项目工程的配置类型,常见的类型有exe、lib、dll
设置依赖lib的方式
在源文件中使用#pragma comment(lib, "xxx.lib")
在项目=》属性=》VC++目录=》库目录中设置:最好使用相对路径,相对路径是相对于工程文件vcxproj来说的。
在项目=》属性=》链接器=》输入=》附加依赖项中设置
设置依赖头文件:和设置依赖lib一样,使用相对路径,相对于工程文件vcxproj
vs开启多处理器编译:右击项目属性
设置当前项目工程编译后的二进制输出目录
设置当前项目工程生成中间文件的存放位置,例如.obj文件
宏定义
调试停止时自动关闭控制台
visual studio中的编码设置
1.单字符和宽字符
单字符:一个字节存储
宽字符:两个字节存储
2.宽字符相关的数据类型
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.工程项目编码的选择
编码选择使用Unicode字符集,则表示使用宽字符
编码选择使用多字节字符集,则表示使用单字符使用1个字节存储。清楚这个很关键,在网络上收发包时需要注意
设置方式如下:
vs调试
1.基本调试快捷键
单步步过:F10
单步进入:F11
单步步出,不想执行完函数所有的语句可以从函数跳出:shift + F11
从一个函数断点跳到下一个函数断点执行:shift + F11
2.留意一些窗口
断点窗口
线程窗口
堆栈窗口
Auto 窗口
Local 窗口
内存窗口
反汇编窗口
监视窗口
输出窗口
3.断点的类型
普通断点
条件断点
数据断点
4.调试时传入参数
如何快速分析一个项目的程序结构
使用调试器将项目启动起来,然后中断下来
在线程窗口上过滤掉系统线程,逐个切换线程,查看各个线程的调用堆栈信息
了解各个线程在什么地方启动
清楚某些线程之间如何交换数据
VS常用快捷键
CTRL + g:跳到文件的指定行
vs中函数参数提示快捷键:ctrl + shift + space
代码注释:CTRL + K,CTRL + C
代码取消注释:CTRL + K,CTRL + u
运行(不调试)程序:CTRL + f5
调试运行程序:f5
逐过程:f10,不能进入函数内部
逐语句:f11,可以跳入函数内部
快速打开解决方案资源管理器:ctrl + alt + l
vs编译静态lib
现有一些源代码文件如下,需求是编译成静态lib
打开vs创建新项目,位置选择security目录所在的路径,模板类型选择lib
然后移除新建libsecurity项目下的文件。不要右击目录进行删除,这样做的话security.vcxproj中的配置项是没有清理干净的
将libsecurity项目下的四个文件复制到security目录下,并将libsecurity目录删除。目录调整结构如下
打开libsecurity.sln文件,右击头文件、源文件将需要编译的文件加进来
在项目属性页配置好输出目录、目标文件名。预编译头选择不使用
结果如下图所示,在输出目录下生成了security.lib,这个lib文件既包含声明,也包含实现
vs编译动态dll
和vs编译静态lib同理,模板类型选择dll
最终生成dll和lib文件,其中dll包含实现,lib包含声明。
将CMake管理的项目如何生成Visual Studio工程
以libuv为例
安装CMake GUI工具
打开CMake GUI工具,设置源码目录以及构建目录
配置
点击Generate
打开构建目录下的libuv.sln解决方案文件