在MinGW编译的项目中使用MSVC编译的Boost二进制文件
Use of MSVC-compiled Boost binaries in a MinGW-compiled project
我已经从这里下载了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实现,并生成不同的标识符名称‘篡改’,这样链接器符号就不会匹配。"
其他参考:不同编译器品牌创建的库的互操作性
相关文章:
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 为什么 gcc 编译这个而 msvc 没有
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- MSVC 无法编译 SFINAE 检查
- 可变参数模板未在 MSVC 中编译?
- MSVC 2010 编译应用程序和 MSVC 2019 编译应用程序之间的行为差异
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 使用 msvc 15 在 Qt5.13 中编译 CUDA 代码
- std::value templated 方法的函数使用 clang 和 g++ 进行编译,但不使用 msvc 进行编译
- 使用MSVC编译的Qt程序在app.exec()上崩溃
- 使用 MSVC 编译时,msdpb* 文件的正确用法是什么?
- constexpr 函数中的 for 循环无法使用 MSVC 19.23 进行编译
- 私有运营商删除会触发 GCC 和 Clang 的编译时错误,但不会在 MSVC 上触发编译时错误
- variadic模板代码中的GCC VS MSVC编译误差
- C2064 从 MSVC v100 更新到 v140 平台工具集时出现编译错误
- GCC 和 clang 抛出"no matching function call"但 msvc (cl) 按预期编译和工作
- 链接错误时,使用CLION/CMAKE/MSVC 2015编译WIN32应用程序
- 强制完成模板编译(MSVC/ g++)
- 在windows上编译MSVC是严格必要的吗?
- 用clang编译MSVC std库.在类范围内显式的模板函数特化