[英]Error C4996 on using boost example
我已經按照他們的說明安裝了Boost 1.58.0,並按照VS2012在安裝指南中給出的示例正常工作。 我的屬性中還包含OpenCV3.0.0。 我想查看一些圖形功能的示例,因此我復制了以下代碼: http : //www.boost.org/doc/libs/1_58_0/libs/graph/example/astar_maze.cpp ,並在其中包含了stdafx.h頂端。
編譯時,我得到
error C4996: 'std::_Fill_n': Function call with parameters that may be unsafe
其他人建議使用
#pragma warning( disable : 4996 )
這似乎並沒有改變任何東西,也沒有通過屬性關閉SDL檢查,這將錯誤變成警告,但給了我更多錯誤,主要是LNK2005。
任何想法如何使代碼運行?
附加信息:關閉SDL檢查時的錯誤類型是(我的項目是BoostExample):
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in BoostExample.obj
error LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in opencv_ts300d.lib(ts_perf.obj)
error LNK2005: ___crtSetUnhandledExceptionFilter already defined in MSVCRTD.lib(MSVCR110D.dll)
最后
fatal error LNK1169: one or more multiply defined symbols found
我想這意味着Boost通過重新定義某些東西來與OpenCV和其他DLL進行交互。 我可能安裝了錯誤的Boost版本嗎? 我只是抓住了主要的。
鏈接器錯誤基本上表明boost和OpenCV是使用不同的運行時設置編譯的,一個用於靜態lib,另一個用於DLL,並且不能混合使用。 您需要重建boost和OpenCV以使用相同的運行時設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.