視頻上云服務(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)行修改。
綜合考慮以上兩種方案,我們決定采用第一種方案解決。
