繁体   English   中英

在Windows 7上将Boost.asio与MingW一起使用时的链接器错误

[英]Linker Error When Using Boost.asio With MingW on windows 7

我试图编译一个在boost.asio示例中找到的非常基本的示例,但出现链接器错误。 这是我正在使用的完整命令行:

mingw32-c++.exe -L..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib -L..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib  -o bin\Debug\CPP_WITHOUT_FEAR_1st_APP.exe obj\Debug\main.o obj\Debug\prog_2.o obj\Debug\timer.o obj\Debug\convert.o   -lwsock32 ..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib\libboost_system-mgw45-mt-1_48.a

我得到的错误:

..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib\libboost_system-mgw45-mt-1_48.a(error_code.o):error_code.cpp:(.text+0x148): undefined reference to `_Unwind_Resume'
..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib\libboost_system-mgw45-mt-1_48.a(error_code.o):error_code.cpp:(.text+0x16c4): undefined reference to `_Unwind_Resume'
..\..\Important\docs\c++\boost\boost_1_48_0\stage\lib\libboost_system-mgw45-mt-1_48.a(error_code.o):error_code.cpp:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'

试图找出问题所在,但我无法在任何地方找到答案。 谢谢,Sree

您是否正在尝试将gcc中编译的目标文件与g ++中编译的程序链接起来?

`undefined reference to `__gxx_personality_v0'` 

当您打算指定g ++时,通常与将gcc指定为编译器有关

如果不是这种情况,您是否尝试使用DW2(Dwarf-2)编译器链接用SJLJ(setjmp / longjmp)编译的目标文件,反之亦然?

例如,您的程序的目标文件是由mingw(版本3.4.5是SJLJ)编译的,而boost是由gcc(版本4.4+是DW2)编译的吗?

如果是这种情况,请确保使用具有SJLJ异常处理或DW2异常处理的同一编译器来编译您的编译器和链接到的库。

他们网站上的minGW 4.40 Beta现在默认情况下具有DW2,并且假定boost是用DW2编译的,则应该可以干净地进行编译和链接。

至于SJLJ和DW2是异常处理的方法。 SJLJ使用setjmp和longjump,而DW2使用DWARF-2(或DWARF-3)调试信息。 SJLJ较慢,但DW2需要更多空间,从而导致大型二进制文件。

有关异常处理的更多信息,请参见此处

有关DW2的工作原理, 请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM