升级项目到Vs2015版本的问题整理

原创 2017年01月03日 14:07:24
提前说明,我升级的项目是从Vs2010升级到Vs2015的,这个过程中遇到许多问题这里整体作了一个整理。
以下整理内容仅供参考,如果不能正常解决,请参考其他内容,也谢谢大家的分享。

1、拿到手的项目你要确定在原来的环境下是可以正常编译通过的。
2、用VS2015打开你的解决方案或者是项目,在要升级的项目上单击鼠标右键,在弹出的菜单中选择“升级VC++编译器和库”菜单,效果如下图:
这时会弹出如下窗口:

如果你已经确定升级了,直接单击“确定”按钮即可。

3、上面的设置好后,你可以直接编译当前项目了,如果你原来项目中使用了一些老旧的函数,可能会出现如下问题:


出现这个问题,是因为微软从2012版本开始就默认为项目开启了SDL安全检查功能,一些老旧的项目可能是忽略这个选项的,这里给大家提供几个方式去解决这个问题:
3.1 在项目属性中选择 “ C/C++” -> “SDL检查” -> "否(/sdl)" ,最后“应用”“确定”

注:上面的设置在一些项目中可能可以解决上面的旧函数报错问题,有就遇到过了,第一天可以正常编译通过,第二天编译就不能正常编译通过。

3.2 根据提示我们可以添加相应的预编译宏“_CRT_SECURE_NO_WARNINGS",添加方式如下:

注:这个方式是参考网上的内容设置的,不过在我的项目中没有起到作用,这里也记录一下,万一别人通过了呢!

3.3 这个方式也是定义一个宏来解决这个问题,但是需要修改“stdafx.h”这个文件,可以在文件中添加如下宏:
#define _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
为了支持旧版本建议使用下面的方式,这里的_MSC_VER 是Vs的编译器版本1700是2012版本的:

注:这个方式在我的项目好用,但并不代表再你们的项目中可以能过。

4、关于使用Boost库时出现的问题,类似内容如下:
std::copy::_Unchecked_iterators::_Deprecate': Call to 'std::copy' with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' VisDataDefine c:\program files (x86)\microsoft visual studio 14.0\vc\include\xutility 2372

这里给大家分享一个方式,解决方式如下图:

注:个人感觉出现这个问题的原因也是因为SDL检查的原因引起的,我在把SDL检查关闭时,上面这个选项不用添加也是可以直接编译通过的。所以感觉本质上还是需要SDL检查的原因引起的。

5、解决方案配置方式引起的编译不通过问题,一些项目在Vs2010中使用Debug和Unicode Debug都可以编译通过,但是切换到Vs2015中使用时,会发现使用Unicode方式进行编译时是编译通不过的,即使编译通过了,再引用库中也会出现一些未知错误,就比如前设置SDL检查问题,我就有遇到了Vs2010项目使用Unicode和非Unicode都可以编译通过,而迁移到Vs2015中,按照上面方式设置后,一些库使用Unicode进行编译时也可以通过,但时在被引用库中怎么设置都不起作用,还会出现一些字符串函数出现未被标识定义的问题出现。一次无意的切换了一下配置方式,使用非Unicdoe进行编译经通过了。所以写在了这里给大家进行分享一下。

6、注意函数
在VS2010中一些函数在Vs2015中已经进行了为优化调整,这样就导致我们的项目不能正常编译通过,这里罗列一些遇到的函数:

6.1 使用 greater<int>() 编译不通过,

经过神起的度娘之后,有人回复这问题是因为从2012之后的VS版本之后,greater的头文件位置发生了改变,这时我们可以按下面的方式去加一下头文件,代码语句如下:

6.2 标准库中std::make_pair,可以使用std::pair(t1, t2)来进行替换

VS2015工程转换为VS2013工程方法汇总

VS2015工程转换为VS2013工程方法汇总
  • qq2399431200
  • qq2399431200
  • 2016年09月01日 11:00
  • 10350

VS2013升级到VS2015

vs2013升级到vs2015
  • haimin0371
  • haimin0371
  • 2016年10月16日 15:56
  • 5877

VS2010项目升级到VS2015时出现的问题

1:“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题 解决设置如下图: 图一: 图二: 2:微软让Socket新函数代替旧函数引起的编译错误,error ...
  • tpnndhqc
  • tpnndhqc
  • 2016年07月09日 14:40
  • 4286

Visual Studio解决方案vs2005/vs2008/vs2010/vs2012/vs2013/vs2015版本互相转换工具

本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52397489EasyDarwin各开源项目目前只...
  • xiejiashu
  • xiejiashu
  • 2016年09月01日 11:22
  • 11637

升级VS后项目加载失败的情况

关于 *.csproj: 找不到此项目类型所基于的应用程序 的解决方案  此项目与Visual Studio 的当前版本不兼容 解决方法:修改  项目名.csproj文件 中 Project...
  • zy0421911
  • zy0421911
  • 2017年02月06日 10:20
  • 818

VS2010工程迁移到VS2013(或VS2015)遇到的SDL问题

该编译选项在VS2013及以后版本,默认为开启状态。故将VS2010的工程迁移到VS2015时,就会触发与它相关的编译错误(不管是通过“双击.sln文件”自动升级,还是新建工程,拷贝代码的方式)。 ...
  • Sagittarius_Warrior
  • Sagittarius_Warrior
  • 2016年07月21日 09:13
  • 2832

VS2008 C++项目迁移至VS2010修改的几个错误

warning C4996: 'wcsicmp': The POSIX name for this item is deprecated
  • jake2658
  • jake2658
  • 2014年06月06日 17:35
  • 736

VS2015打开VS2010项目出现的问题解决方法

电脑升级为win10,安装了vs2015。 但是用vs2015打开之前由vs2010创建的项目时,出现了一些问题,错误如下:MSB8020 The build tools for Visual St...
  • wangshubo1989
  • wangshubo1989
  • 2015年10月08日 16:40
  • 24400

vs2015中c++中multiset容器定义对象时参数列表中显式调用greater无法被识别的解决办法

错误原型: 解决办法: 包含头文件#include 错误消除!!
  • sinat_20265495
  • sinat_20265495
  • 2016年12月04日 22:00
  • 545

VS2013 VC++ 项目引用的lib也需升级重新编译

编译时报错: Error   6   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match valu...
  • bxprog
  • bxprog
  • 2015年12月18日 10:45
  • 1556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:升级项目到Vs2015版本的问题整理
举报原因:
原因补充:

(最多只允许输入30个字)