链接错误,试图链接的刺激时,文件系统::调试MSVC11项目(Linker errors when

2019-10-18 18:29发布

我试图使用boost::filesystem在我的项目,但我碰到的链接错误:

Error   14  error LNK1169: one or more multiply defined symbols found   C:\Users\Developer\Desktop\mandala3d\Debug\mandala.exe  1   1   mandala
Error   5   error LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QAE@PBD@Z) already defined in MSVCRTD.lib(MSVCR110D.dll)    C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   4   error LNK2005: "public: __thiscall std::bad_cast::bad_cast(class std::bad_cast const &)" (??0bad_cast@std@@QAE@ABV01@@Z) already defined in MSVCRTD.lib(MSVCR110D.dll)  C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   12  error LNK2005: "public: __thiscall std::exception::exception(char const * const &)" (??0exception@std@@QAE@ABQBD@Z) already defined in LIBCMT.lib(stdexcpt.obj) C:\Users\Developer\Desktop\mandala3d\mandala\MSVCRTD.lib(MSVCR110D.dll) mandala
Error   6   error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) already defined in MSVCRTD.lib(MSVCR110D.dll)  C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   7   error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) already defined in MSVCRTD.lib(MSVCR110D.dll)    C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   8   error LNK2005: "public: virtual __thiscall std::bad_cast::~bad_cast(void)" (??1bad_cast@std@@UAE@XZ) already defined in MSVCRTD.lib(MSVCR110D.dll)  C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   9   error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) already defined in MSVCRTD.lib(MSVCR110D.dll)   C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(stdexcpt.obj)   mandala
Error   13  error LNK2005: "public: virtual char const * __thiscall std::exception::what(void)const " (?what@exception@std@@UBEPBDXZ) already defined in LIBCMT.lib(stdexcpt.obj)   C:\Users\Developer\Desktop\mandala3d\mandala\MSVCRTD.lib(MSVCR110D.dll) mandala
Error   10  error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR110D.dll)    C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(invarg.obj) mandala
Error   11  error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR110D.dll)    C:\Users\Developer\Desktop\mandala3d\mandala\LIBCMT.lib(invarg.obj) mandala

我建立升压用下面的命令:

bootstrap
.\b2

而且我指着$BOOSTDIR\stage\lib的库包括目录,我的编译器Visual Studio 2012 (v110)

我曾尝试直接链接的debug是在生成的库$BOOSTDIR\lib\*目录,但遇到了其他错误。 我还怀疑是不是静态链接库的标准或预期的方式。

我在做什么错在这里?

Answer 1:

你既混合C运行时库的联系和调试/发布二进制文件。

libcmt是静态C运行时库的发行版本,而msvcrtd是动态C运行时库的调试版本。 您同时显示在你的错误,这意味着你要他们混,你不能这样做。

您需要重建加速使用C运行时的相同版本的项目或重建项目中使用相同版本的加速。 然而,事实上,你目前拥有的调试和发行库混合通常是一个标志,别的东西是真的错了您的设置。

如果您在项目的属性看,转到C / C ++ - >代码生成,你会看到一个“运行时库”字段。 您可以将其更改为指定项目应该如何链接到C运行时。 / MDD将连接msvcrtd.dll ,而/ MT将链接libcmt.lib



文章来源: Linker errors when attempting to link boost::filesystem to debug MSVC11 project