Visual Studio 2017 C++使用

参考:链接
链接
本博客是以上两个视频的笔记

1.安装

只选下面这个就可以
在这里插入图片描述
安装详情,自行百度

2 项目建立流程

2.1 新建项目

在这里插入图片描述
我们将项目名称设为Test,解决方案名称设为Code。一个解决方案中可以建立多个项目。每一个项目都可以转化成一个exe或dll文件。
点击确定以后出现下图窗口:
在这里插入图片描述
点击确定以后就成功建立了项目。
在视图菜单下可以找到解决方案资源管理器,通过解决方案资源管理器可以看到解决方案下的项目文件,如下图所示:在这里插入图片描述
右击“源文件”可添加cpp文件。

2.2 安全开发生命周期(SDL)检查

为了项目开发更加的安全,用VS开发C++程序默认进行安全开发生命周期(SDL)检查,这就会有一些以前常用的东西报错,如下面代码就会报错:

#include<stdio.h>

int main() {
	int m;
	scanf("%d", &m);

	return 0;
}

编译(生成目录下面有一个编译按钮)一下,出现如下错误:

This function or variable may be unsafe. Consider using scanf_s instead. 
To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.

通过上面那串英文,我们可以得出以下两种解决方案:

// 修改scanf为scanf_s。scanf_s才遵循SDL,更安全。
#include<stdio.h>

int main() {
	int m;
	scanf("%d", &m);

	return 0;
}

// 定义一个宏_CRT_SECURE_NO_WARNINGS。此宏的意思是说本cpp文件不进行SDL检查,请不要再报错了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
	int m;
	scanf("%d", &m);

	return 0;
}

如果这个宏要在项目的很多文件中使用,一般会将宏定义在项目中,从而防止宏的重定义。定义过程如下:
在这里插入图片描述
右击项目Test,选择属性。
在配置上选择当前活动的项目。
然后按照上图点击编辑,然后将宏_CRT_SECURE_NO_WARNINGS复制上去,结果如下所示,然后点击确定。
在这里插入图片描述
关闭SDL检查的方法是:项目->属性->C/C+±>SDL检查,选测否,就可以将其关闭了

3 其他

3.1 帮助文档与重新选择需要下载的VS组件

点击相应函数,再点击F1就可跳转到此函数的帮助文档中了。这个文档是通过浏览器打开的,如果需要下载帮助文档的组件,过程如下:
右击VS2017,点击更改
在这里插入图片描述
单个组件下勾选Help Viewer,然后点击修改
在这里插入图片描述

在这里插入图片描述
然后出现:
在这里插入图片描述
点击添加,添加成功后,点击更新
然后就可以在如下地方搜索函数的使用方法
在这里插入图片描述

3.2 解决方案中的多个项目

右击项目,选择设为启动项,就可以调试和运行相应的项目,如下图所示
在这里插入图片描述

3.3 解决方案的目录结构

在这里插入图片描述
.vs:存放一些缓存内容
Debug:存放Debug和x86下的exe等文件(下面有介绍)
Test和Test2是两个项目文件,项目文件的目录结构如下:
在这里插入图片描述
可以看到,除了cpp文件和头文件,还有一些vs创建的与项目相关的文件。其中Debug和Release是编译时候的中间文件,即编译时产生的obj【注:C++是先将cpp文件编译乘obj文件,再将obj文件链接成exe文件】
项目中的中间文件Debug和Release、解决方案里面的Debug和Release,还有.vs文件都是可以删除的,将这些文件删除以后再发给别人,别人还是可以成功运行这个程序的。
exe文件的生成:点击生成解决方案可生成.exe文件,生成解决方案是可以通过如下选项进行选择的:
在这里插入图片描述
可以选择Debug、Release和x86、x64。如果选择的是Debug和x86,那么就会在解决方案的目录下的Debug目录中生成exe等文件。如果选择的是Release和x86,那么就会在解决方案的目录下生成一个名为Release的文件夹用于存放exe等文件。
如果选择的是x64,那么就会在解决方案的目录下生成一个名为x64的文件夹用于存放Debug和Release。
这里的x86和x64应该是代表此exe文件可以在哪个种系统中运行。
vs中的程序有debug和release两个版本,程序员可以对Debug版进行调试,Release版是给用户使用的,用户一般不在发布版本上进行调试。debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。
debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。【参考链接

3.4 Win32控制台(控制台应用)与Win32项目(桌面应用程序)

在这里插入图片描述
Win32控制台(控制台应用)是一个只有输入输出的黑框框
Win32项目(桌面应用程序)是可以添加按钮等控件的程序

3.5 发布exe文件

直接发送解决方案目录中的Release文件夹下的exe文件给别人,则会因为别人电脑里没有相应的运行库而无法成功运行程序。解决方法如下:
方法一:将项目的运行库修改为“多线程(/MT)”。
在这里插入图片描述
此时生成的Release版的exe文件中是包含运行库的
方法二:让想要运行你的程序的人安装相应的运行库,运行库的名字一般为Visual C++ Redistributable for Visual Studio 20xx。可以在链接中找到。这个运行库可以在你没有安装Visual Studio 20xx的条件下,运行用Visual Studio 20xx编写的exe文件。
在这里插入图片描述

上面的发布方法不适用于MFC程序。MFC:利用微软提供的C++组件类创建界面

3.6 调试

请选择Debug模式下进行调试
在这里插入图片描述
调试下的开始调试和本地Windows调试器是一个东西
逐语句:一条语句一条语句执行, 会进入函数
逐过程:不会进入函数
断点:程序执行到断点会暂停,点击继续后会执行到下一个断点
条件断点:点击下图的螺丝,就可以设置条件断点。
在这里插入图片描述
下面设置条件断点:当a等于10000时程序暂停
在这里插入图片描述
在调试目录下还有很多用于调试的功能,如调用堆栈和监视
在这里插入图片描述
在调用堆栈中,我们可以查看被调用函数的相关信息,如下:

在这里插入图片描述
在监视中,我们可以输入想要查询的变量,从而得到该变量此时的值为多少。下图查询a此时的值为10
在这里插入图片描述

3.7 代码分发方式

  1. 源码:头文件+源文件
  2. 动态库:头文件(可选)+LIB文件(可选)+DLL 文件
  3. 静态库:头文件+LIB文件
    在这里插入图片描述
    在这里插入图片描述

3.7.1 静态库配置方法(头文件+LIB文件)

方法一:在代码的开头添加如下代码:

#include"头文件的绝对路径"
#pragma comment(lib, "lib文件的绝对路径")

方法二:在项目的属性里面配置,如下:
配置头文件:
在这里插入图片描述
将头文件所在目录放进附加包含目录中。注意不要把头文件都放进去。
配置lib文件:
在这里插入图片描述
将lib文件所在目录放进附加包含目录中。注意不要把lib文件都放进去。然后在添加lib文件,如下:
在这里插入图片描述
配置好了,以后下面有个确定是需要点的,不然配置不会保存
配置的时候,注意下面两个要匹配好
在这里插入图片描述

3.7.2 动态库配置方法(头文件(可选)+LIB文件(可选)+DLL 文件)

头文件(可选)+LIB文件(可选) 和静态库配置方法一样,这里就不再赘述。
DLL文件的配置方法为:将DLL文件放在和exe文件同一个路径下就可以了

3.8 动态库的建立

参考:https://www.bilibili.com/video/BV1hE411Y7vd?spm_id_from=333.999.0.0,不想写了,心累。。。

posted @ 2022-07-26 19:51  好人~  阅读(835)  评论(0编辑  收藏  举报