【教程】編譯C++報錯,如何解決RTSP/GB28181/HIKSDK/Ehome協(xié)議視頻平臺EasyCVR遇到的這個問題?

視頻上云服務(wù)平臺EasyCVR開發(fā)過程中,TSINGSEE青犀視頻研發(fā)團(tuán)隊遇到了不少難題,比如調(diào)用動態(tài)庫報“0xC0000005錯誤、設(shè)備拉流不穩(wěn)定等問題,目前都已經(jīng)得到完美解決。

在開發(fā)EasyCVR的部分功能過程中,需要編寫 C++ 代碼,生成動態(tài)庫后,由 Go 語言調(diào)用。在編譯 C++項目時,出現(xiàn)以下錯誤:

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”的聲明

經(jīng)過分析后,我們排查到主要是 fopen 函數(shù)已經(jīng)被 fopen_s 取代了,所以出現(xiàn)了這種錯誤。fopen_s 相對于 fopen 函數(shù)更安全,在內(nèi)部添加了溢出檢測。

為此我們提出了以下兩種解決方案:

方案一

1、右擊工程,點擊屬性;

2、在配置屬性-C/C+±預(yù)處理器中的預(yù)處理器定義中添加對應(yīng)的宏信息,即可忽略這個錯誤。

_CRT_NONSTDC_NO_DEPRECATE

_CRT_SECURE_NO_WARNINGS

方案二

直接使用 fopen_s 函數(shù)代替 fopen 函數(shù)。

但是 fopen_s 的函數(shù)和 fopen 的用法并不相同,所以需要根據(jù)實際工作量進(jìn)行修改。

綜合考慮以上兩種方案,我們決定采用第一種方案解決。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容