升级项目到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)来进行替换

相关文章推荐

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

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

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

本文转自EasyDarwin团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52397489EasyDarwin各开源项目目前只...

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
  • 1324

VC++2008项目源码升级到VC++2013下编译和部署的问题

VC++2008项目源码在Win7下升级到VC++2013编译,修正一些语法表达上的问题之后,编译通过. 遇到以下3个问题,这里做一下记录。 1)部署到Win2003,运行Windows提示不是合...
  • baodi_z
  • baodi_z
  • 2015年03月23日 17:13
  • 1245

VS2015工程转换为VS2013、VS2012、VS2010工程方法汇总

声明:本文大部分出自于转载,感谢大神们的贡献,小部分是自己增添的。因为有自身亲测的体验,且转载的原文中有小小的bug,故花点时间写了方法汇总,特此说明。 作用:解决vs低版本无法直接打开高版本的工程文...

VS2013的工程升级到VS2015工程的相关问题记录

1,无法启动此程序,因为计算机中丢失MSVCR120.dll、MSVCR120D.dll、MSVCPD120.dll、MSVCPD120D.dll 方法一:去官网下载 安装后会在C:\Windows...

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

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

VS2017如何配置OpenGL(与VS2010,2012等配置有所不同)

vs2017配置openGL环境与以前版本的不同之处

Visual Studio手动升级旧版本程序

如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033问题:程序之前使用VS2010写的,后面由于项目升级改用了VS2013,因此产生了项目升...
  • itas109
  • itas109
  • 2017年01月20日 14:42
  • 627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:升级项目到Vs2015版本的问题整理
举报原因:
原因补充:

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