我已经从 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,以解决我的问题?
当然,我正在为我的构建配置使用适当的库(发布、动态运行时库)。
最佳答案
我正在根据我的问题下方发表的评论做出回答,只是为了让事情变得正确。
因此,从源代码构建 boost使用相同的编译器(我使用 TDM-GCC 和 gcc 4.8.1)确实解决了链接问题.
如 Rup 所述,一个“不能混合使用 GCC 和 Visual Studio 编译的 C++:它们具有不同的 C++ ABI 实现,并生成不同的标识符名称‘改组’,以便链接器符号不匹配。”
附加引用:Interoperability of Libraries Created by Different Compiler Brands
关于c++ - 在 MinGW 编译的项目中使用 MSVC 编译的 Boost 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26538935/