随笔 - 1506  文章 - 1  评论 - 7  阅读 - 58万

RTSP/GB28181/HIKSDK/Ehome协议视频融合平台EasyCVR编译C++报参见“XXX”的声明错误

视频上云服务平台EasyCVR开发过程中,TSINGSEE青犀视频研发团队遇到了不少难题,比如调用动态库报“0xC0000005错误、设备拉流不稳定等问题,目前都已经得到完美解决。

在开发EasyCVR的部分功能过程中,需要编写 C++ 代码,生成动态库后,由 Go 语言调用。在编译 C++项目时,出现以下错误:
1>D:\Project\cpp\easyface\include\face_file_util.h(94): error C4996: ‘fopen’: 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.
1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(205): note: 参见“fopen”的声明

经过分析后,我们排查到主要是 fopen 函数已经被 fopen_s 取代了,所以出现了这种错误。fopen_s 相对于 fopen 函数更安全,在内部添加了溢出检测。

为此我们提出了以下两种解决方案:

方案一

1、右击工程,点击属性;
2、在配置属性-C/C+±预处理器中的预处理器定义中添加对应的宏信息,即可忽略这个错误。

1
2
3
_CRT_NONSTDC_NO_DEPRECATE
 
_CRT_SECURE_NO_WARNINGS

  

方案二

直接使用 fopen_s 函数代替 fopen 函数。

但是 fopen_s 的函数和 fopen 的用法并不相同,所以需要根据实际工作量进行修改。

综合考虑以上两种方案,我们决定采用第一种方案解决。

posted on   EasyNVR  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示