0

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

我的编译器是使用 GCC 4.3.2 定制的 MinGW

所以当我包括:

#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 二进制文件以进行提升的好地方吗?构建系统给我带来了问题,所以我使用了这个自定义 MinGW 包附带的一些二进制文件

4

2 回答 2

2

好的,我发现了问题。这有点令人费解。

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 编译的二进制文件的混合和匹配组合,所以无论我使用哪一个,我都会遇到类似的错误,因为我至少链接到一个二进制文件与我目前正在尝试的编译器不兼容。

I'm now using GCC 4.1.2 and most of my binaries have been compiled with it. I am still how ever using a few binaries from 3.x, which is why I am not upgrading to 4.3.x just yet.

Hope that was less confusing to read than it was to write...

This seems to be a good post addressing some of the issues as they were with 4.1.x

于 2009-01-29T07:54:50.503 回答
0

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

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

于 2009-01-29T07:05:36.283 回答