楼主最近在学习图像处理,所用平台为VS2017+opencv3.2.0。调试程序时,报错如下:

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

仔细一看,这不挺简单嘛,在包含文件前面添加提示的宏定义就行了:

#define _CRT_SECURE_NO_WARNINGS

运行之后,发现结果依然没变,继续报错如上所示。

于是,内事不决问百度,总结如下几点解决方法:

  • 1.就如提示那样添加宏定义:
#define _CRT_SECURE_NO_WARNINGS
  • 2.新建项目的时候去掉“安全开发生命周期(SDL)检查”即可将错误转变成警告,不影响编译和运行。项目建立好之后就在 “项目->属性->C/C++/常规”将SDL检查改为“/sdl-”,如图所示:

  • 3.fopen等类似的函数已经不太安全,建议以后采用_s结尾的安全版本。

  • 4.和第一种方法类似,找到“项目->属性->C/C++/预处理器/预处理器定义”中添加“_CRT_SECURE_NO_WARNINGS”,如下图所示:

  • 5最后一条就是,在编译的头文件前面加上:#pragma warning( disable : 4996)。

楼主都试过了,发现没有用!!!

  • 6.楼主以前偶然间看过一个配置的解决方案,试着操作了一下:
    “无心插柳柳成荫”啊,居然调试成功了!!!
    分享一下:
    将解决方案有Debug改为Release,配置环境就行了。
    不过楼主一直追究这是为什么***,同时欢迎大家留言互相学习*啊。

更多推荐

VS报错【C4996】This function or variable may be unsafe. Consider using fopen_s inste