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

标签 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,以解决我的问题?

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

最佳答案

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

因此,从源代码构建 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/

相关文章:

c++ - ppl,如何正确使用它?

c++ - 在 Qt5 中的多个弹出窗口小部件上接收鼠标 EnterEvent 和 LeaveEvent

c++ - 为什么我得到 "recursive type or function dependency context too complex"?

c++ - 获取 IAccessible 元素的句柄

c++ - 与 move 构造函数配对时发生意外的析构函数调用

c++ - Boost MPL排序模板参数包

c++ - BOOST_PHOENIX_ADAPT_FUNCTION 导致无效模板错误

c++ - boost boost::iterator_facade 取消引用

c++ - const char 转换错误

C++——线程树,有序遍历