【问题标题】:Including boost::filesystem produces linking errors包括 boost::filesystem 会产生链接错误
【发布时间】:2009-01-29 06:57:52
【问题描述】:

好的,首先,我正在链接到 boost_system 和 boost_filesystem。

我的编译器是custom build of MinGW with GCC 4.3.2

所以当我包括:

#include "boost/filesystem.hpp"

我收到链接错误,例如:

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.text+0xe35)||undefined reference to `_Unwind_Resume'|

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|

经过一番搜索后,我发现最常见的是当您尝试将 C++ 程序与 gcc(GNU C 编译器)链接时。但是我打印出了Code::Blocks正在运行的确切构建命令,它肯定是与g++链接的。

如果我注释掉这个包含,一切正常。

有什么想法吗?另外,作为一个方面,有人知道获取 Windows 二进制文件以进行提升的好地方吗?构建系统给我带来了问题,所以我正在使用custom MinGW package 附带的一些二进制文件@

【问题讨论】:

  • 供将来参考,__gxx_personality_v0 错误表示缺少指向 GCC 的 C++ 运行时库 libstdc++ 的链接。如果您使用 gcc(并且没有 -lstdc++)而不是 g++,或者您的 C++ 运行时版本不匹配,则会发生这种情况。
  • 很好,我不知道这个,谢谢你的信息

标签: c++ gcc boost linker mingw


【解决方案1】:

好的,我发现了问题。有点绕。

GCC 在 4.x 分支中逐渐变得更加符合 IS 14882。随着他们的继续,他们正在删除已弃用的非标准投诉功能。

虽然 4.1.x 似乎只弃用了它们而没有删除它们,但 4.3.x 似乎实际上已将它们删除。这意味着 4.3.x 及更高版本与在 3.x 分支中编译的内容存在一些向后兼容性问题(该分支使用了已弃用且现已删除的功能)

我使用的是用 GCC 3.x、4.1.x 和 4.3.x 编译的二进制文件的混合和匹配组合,所以无论我使用哪一个,我都会遇到类似的错误,因为我至少有一个二进制文件正在链接到的与我目前正在尝试的编译器不兼容。

我现在使用的是 GCC 4.1.2,我的大部分二进制文件都已经用它编译过了。我仍然在使用 3.x 的一些二进制文件,这就是为什么我还没有升级到 4.3.x。

希望读起来比写起来更容易混淆......

This 似乎是一篇很好的帖子,解决了 4.1.x 中的一些问题

【讨论】:

  • 据我所知,GCC 2.95、2.96、3.0、3.1.1、3.2 和 3.4 都破坏了与以前版本的 C++ ABI 兼容性,因此您不能在它们之间混合二进制文件。理论上,3.4 及更高版本(包括 4.x,我相信)都应该兼容,至少在它们再次破坏兼容之前......
【解决方案2】:

Windows 二进制文件:www.boost.org - 请参阅“入门”页面 - 但如果您在 MingGW 上使用 g++,则不需要这些。一个简单的理解方式是,MingGW 就像操作系统中的一个操作系统,所以你实际上并没有真正使用 Windows。你得到的那些可能是对的。

虽然不确定您的代码发生了什么,但听起来 lib 文件没有以某种方式正确链接。 Boost 自己命名它的 lib 文件,因此您实际上并没有明确命名它们,但是您必须在正确的路径上拥有用于 boost 的 lib 文件(并确保它们也已安装/构建,它们可能不是)。我不确定如何使用 g++ 让它们走上正确的道路,因为我没有使用过 MingGW,我只使用过 Visual Studio 的 boost。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多