我按照他们的说明安装了Boost 1.58.0,他们在安装指南中提供的示例使用VS2012正常工作。我的OpenHV3.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进行交互。我可能安装了错误的升级版本吗?我抓住了主要的一个。
答案 0 :(得分:0)
链接器错误基本上告诉boost和OpenCV是使用不同的运行时设置编译的,一个用于静态lib而另一个用于DLL,并且不能混合使用。您需要重建boost和OpenCV才能使用相同的运行时设置。