簡體   English   中英

使用升壓示例時出現錯誤C4996

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM