在MinGW编译的项目中使用MSVC编译的Boost二进制文件

时间:2014-10-23 23:02:52

标签: c++ visual-c++ boost linker mingw

我已从here下载了Boost二进制文件。我的项目依赖于boost_system和boost_filesystem,并且如果我在使用Visual Studio进行编译时向链接器选项添加适当的依赖项时正确构建,但我现在尝试在Code :: Blocks(MinGW编译器)下编译并遇到以下情况:

"directve `/FAILIFMISMATCH:"_MSC_VER=1800" /FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=0" /FAILIFMISMATCH:"RuntimeLibrary=MD_DynamicRelease" /DEFAULTLIB:"msvcprt" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" "

虽然这是一个警告,但它使我无法找到依赖项,因为我的项目无法使用undefined reference to 'boost::system::generic_category()'和许多其他相关的未定义引用构建。

问题:我应该使用MinGW从源代码编译Boost,以解决我的问题吗?

当然,我使用适当的库进行构建配置(发布,动态运行时库)。

1 个答案:

答案 0 :(得分:1)

我根据我的问题下面发表的评论做出回答,只是为了让事情正确。

所以,使用相同的编译器从源代码 构建boost (我使用带有gcc 4.8.1的TDM-GCC)确实解决了链接问题< /强>

Rup所述,一个“不能混合使用GCC和Visual Studio编译的C ++:它们具有不同的C ++ ABI实现,并生成标识符名称的不同'manglings',以便链接器符号不匹配“起来。

其他参考:Interoperability of Libraries Created by Different Compiler Brands