visual studio 各个版本之间混用的时候问题很多。
windows sdk版本:
windows api的版本,也就是系统版本,一版win10的系统,如果默认情况下不去安装win8 sdk,那么就无法运行调用win8 sdk 的程序
如何查看win sdk,C:\Program Files (x86)\Microsoft SDKs\Windows,
下面文件夹就是对应的sdk版本,一般开发者为了兼容使用老的vs创建的调用老的win sdk的程序,都需要安装老的sdk版本
否则会出现错误:找不到windows sdk版本8.1
安装方法:
1.启动vs2017安装程序,然后选择c++,右边可以勾选想安装的组件
2.工具->更新工具和功能
平台工具集:
MSBuild 平台工具集功能提供特定于驱动程序开发的工具和库,也就是vs这个软件的工具集合,每个版本的vs都有自己的工具集,平台工具集就是MSBuild所用的工具
V100之后的版本在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0目录下,V100(包括V100)之前版本在C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms目录下。
每个项目都可以设置自己的工具集,高版本vs打开低版本项目的时候,需要修改项目的工具集为新的工具集,向下兼容,新的工具集和调试老的工具集的项目。
老的vs打开新的vs,会提示找不到工具集,因为老的vs默认是不会安装新的vs 的平台工具集的。
项目->属性->常规,可以修改平台工具集和使用的win sdk版本。
VS各版本对应的工具集版本号如下:
-Visual Studio 2015: V140
-Visual Studio 2013: V120
-Visual Studio 2012: V110
-Visual Studio 2010: V100
-Visual Studio 2008: V90
-Visual Studio 2005: V80
-Visual Studio 2003: V71
-Visual Studio 2002: V70
-Visual Studio 6: V60
最简单的解决办法:
右键项目->重定项目目标,选择最新的平台
相关错误:
1.运行老版本vs项目,生成exe,运行,提示:由于找不到msvcp120D,无法继续执行代码。
原因是缺少了相应的dll,带D 的是debug dll,不带D的是release dll.安装windows运行库会生成相应的release dll到C:\Windows\System32或者systemwow64中。
分别对应32位系统和64位系统,两者是有区别的。
exe是通过2013debug方式生成的,所以会使用msvcp120D
删除vs2013后,msvcp120D会自动从系统删除,
再安装vs2017,会自动将msvcp140D 添加到系统中。所以就找不到msvcp120D了。
windows运行环境安装的都是release 版本的dll,不会安装 debug版本
解决办法1:下载dll,放到system32或者64中。
解决办法2:重新编译和生成exe,使用140来生成,或者120 release的方式。