Visual Studio 2017(VS2017)的安装和WDK的安装
安装VS2017
Vs2017包含3个版本:社区版(Visual Studio Community免费)、专业版Visual Studio
Professional、企业版Visual Studio Enterprise
以下是三个版本的区别:
这里选择安装企业版本:
下载地址:https://visualstudio.microsoft.com/zh-hans/vs/enterprise/
下载得到一个很小的exe,双击运行会安装Visual Studio Installer。
Vs2017的安装和卸载使用Visual Studio Installer来进行配置。由于vs2017集成的插件非常多,完整的离线安装包多达50GB,另外随着版本更新,会有更多的插件进行更新。因此vs2017使用安装管理器来进行安装。
VS2017集成了很多平台的工具。这里为了使用VS2017进行C/C++语言的windows桌面开发。我们只需要选择Windows的“使用C++的桌面开发”选项和其他工具集的“Visual Studio扩展开发”即可:
如果需要兼容XP等操作系统并且需要编写MFC应用程序,还需要在单个组件栏选择如下复选项:
如果你安装了WDK,为了能使windows桌面开发继续正常使用,应当安装如下单个组件:
主要是下面三个,上面的2个组件时附带自动勾选。
安装完成后,只需要在启动的时候进行开发环境设置即可(如果有自己的微软账号,登陆即可完成环境的配置同步,或者导入曾经导出的配置文件。)
最后在菜单->帮助->注册产品,在其中输入序列号即可激活。
序列号:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF
创建控制台项目
现在新建一个windows 控制台应用程序。
文件->新建->项目,将弹出如下新建项目的对话框:
设置项目名称和项目所在的文件夹路径后点击确定,vs2017即为项目创建目录和该工程模版文件。
当我们创建完毕后,就会看到类似如下的界面(排版布局会有所区别,依赖于自己的主题和布局):
注意:vs2017创建新项目时会默认创建一个和项目名称一样的解决方案,解决方案包含项目,一个解决方案可以包含多个项目,其目录结构也是如此。
项目属性介绍
我们查看ConsoleApplication1项目的项目属性:在项目上右击,选择属性
项目属性的设置依据我们的配置有关,一个项目的编译可以采用不同的方式进行编译:
比如x86或者x64,debug或者release,每一个新的配置都对应一个新的配置内容,也即这些配置之间互不影响。
从上图,看到了C++的项目属性。
该属性页使用很多的内置宏进行确定C++的库目录和项目生成文件的路径等设置
例如:$(ProjectName)、$(MSBuildProjectName)我们在使用这些宏的时候只需要像C语言中的宏一样看待就好。我们也可以通过如下方式查看宏的定义值:
随便找到一个可以编辑的项,单击编辑选项
弹出如下页面:
可以看到,上图中$(VC_IncludePath)和$(WindowsSDK_IncludePath)被展开成6个路径.
我们单击上图指示的“宏”按钮,查看定义的宏
可以看出,实际上VS2017为了简化操作定义了很多属性宏,便于修改属性的编译和链接的配置。
比如,在我们项目的VC++目录:
这些配置,规定了VS在进行代码动态检查、编译和链接生成文件时查找库、源代码头文件时使用的目录。
有时候,我们的项目使用了其它项目的lib库时,我们需要将这些第三方库所在的目录或者文件的路径添加到“库目录”中,我们能够看出,目录项之间使用分号进行隔开。
预编译头的使用
VS2017使用模版创建项目时都会使用预编译头,其目的是加快编译速度,用于多个文件引入相同的一组头文件时对编译器的预变异工作而言是重复工作,预编译头文件可以告诉编译器不需要重复进行预编译工作。Vs2017默认的预编译头文件是pch.h(precompiled header),如果想不使用预编译头的话,只需要在项目属性里面取消即可。
当不使用预编译头后,删除源代码对pch.h的引用,也不会报错。
安装WDK
对于wdk的安装,我们可以参考微软给出的文档:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk
其意思是:
首先安装VS2017的任意版本。
然后下载wdk的在线安装包。
Wdk的安装部分分成两个部分:
第一:安装Wdk(同时vs2017在之前应当安装了对应版本的SDK,二者版本号前三部分对应即可)
第二:配置VS2017,运行WDK安装目录下的VS扩展插件(Windows Kits\10\Vsix\WDK.vsix文件)安装,即可完成在vs2017中添加创建驱动编写项目的模版。注意:如果双击该WDK.vsix文件无法正常打开(这表明安装完成WDK后也不会主动安装此插件),请重启电脑后,在没打开过vs2017的条件下再次尝试。
安装完成后,将无法编译基本的window 桌面程序,报错提示是
“LINK : fatal error LNK1104: 无法打开文件“msvcprtd.lib””
显然,是找不到库了,我们查看安装WDK前后同一项目的属性->VC++目录->库目录的计算值:
未安装WDK时,库目录的实际展开值(注意下图窗口的标题):
安装WDK后,库目录的实际展开值:
显然,虽然项目的属性保存在各个项目所在的磁盘上,但是同样的属性宏的解析结果却不同 ,这是因为VS2017会根据实际安装情况动态的设置属性宏的实际值。
由于安装了 WDK后,库目录的值发生变化导致无法正确的找到导入的库,才使得编译失败。
根据以上找不到库目录的问题,有两种解决办法:
方法一:将未安装WDK情况下的库目录添加到库目录中。
方法二:由于安装WDK后新的$(VC_LibraryPath_x86)的值被修改,然而磁盘上并不存在该目录,因此安装该功能即可。
具体方法是:打开visual studio installer的单个组件中添加如下组件:(注意:从上面一个图中我们可以看出使用的版本是14.16,因此应当选择14.16的版本)
当这些单个组件安装完毕后,即可完成正常的编译工作。