C++ 包括boost::filesystem会产生链接错误

C++ 包括boost::filesystem会产生链接错误,c++,gcc,boost,linker,mingw,C++,Gcc,Boost,Linker,Mingw,首先,我链接到boost_系统和boost_文件系统 我的编译器是一个 因此,当我包括: #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\li

首先,我链接到boost_系统和boost_文件系统

我的编译器是一个

因此,当我包括:

#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'|
<> P>这是我在尝试将C++程序与GCC、GNU-C编译器联系起来后,最常发现的。但是我打印出了正在运行的确切的build命令,它肯定是与g++链接的

如果我把这包括进去,一切都很好


有什么想法吗?另外,作为一个侧面,有人知道一个好地方可以获得用于boost的windows二进制文件吗?构建系统给我带来了一些问题,所以我使用了一些Windows二进制文件:www.boost.org-请参阅“入门”页面-但是如果您在MingGW上使用g++,您不需要这些。一个简单的理解方法是,MingGW就像是操作系统中的一个操作系统,所以实际上你并没有使用Windows。你得到的可能是对的


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

好的,我发现了问题。这有点复杂

GCC在4.x分支中逐渐变得更符合is 14882。随着时间的推移,他们正在删除不推荐的非标准投诉功能

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

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

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

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


似乎是一个很好的帖子,如4.1。x/p>,对于将来的引用,<>代码>(xgxxPuxalyIsV0)错误是LIbSTDc++,GCC的C++运行时库缺少链接的标志。如果你连接GCC(和没有-LSTDC +)而不是G++,或者你的C++运行时版本是不匹配的,那么这是很严重的。我不知道,感谢我所知道的信息,GCC 2.95,2.96,3,3.1.1,3.2和3.4都打破了C++与以前版本的兼容性,所以你不能在它们之间混合二进制文件。理论上,3.4和更高版本(包括4.x,我相信)都应该兼容,至少直到它们再次破坏compat。。。