[英]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.