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

Use of MSVC-compiled Boost binaries in a MinGW-compiled project

本文关键字:编译 MSVC Boost 二进制文件 MinGW 项目      更新时间:2023-10-16

我已经从这里下载了Boost二进制文件。我的项目依赖于boost_system和boost_filesystem,如果在使用Visual Studio进行编译时向Linker Options添加适当的依赖项,则可以正确构建,但我现在正尝试在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吗?

当然,我正在为我的构建配置使用合适的库(Release,动态运行库)。

我正在根据我的问题下面发布的评论进行回答,只是为了让事情变得正确。

因此,使用相同的编译器从源代码构建boost(我在GCC 4.8.1中使用了TDM-GCC)确实解决了链接问题

正如Rup所指出的,"不能将用GCC和Visual Studio编译的C++混合在一起:它们有不同的C++ABI实现,并生成不同的标识符名称‘篡改’,这样链接器符号就不会匹配。"

其他参考:不同编译器品牌创建的库的互操作性