我已从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,以解决我的问题吗?
当然,我使用适当的库进行构建配置(发布,动态运行时库)。
答案 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