我有一个可以在Linux下编译且没有错误的程序,但是当我使用MinGW在Windows上编译该程序时,它无法运行,因为它说它旁边需要一些DLL。因此,我决定静态链接它,但它输出一些错误:
/usr/i586-mingw32msvc/lib/libsfml-window-s.a(WindowImplWin32.o):WindowImplWin32.cpp:(.text+0x146e): undefined reference to `__Unwind_Resume'
/usr/i586-mingw32msvc/lib/libsfml-window-s.a(WindowImplWin32.o):WindowImplWin32.cpp:(.text+0x17d0): more undefined references to `__Unwind_Resume' follow
/usr/i586-mingw32msvc/lib/libsfml-window-s.a(WindowImplWin32.o):WindowImplWin32.cpp:(.eh_frame+0x12): undefined reference to `___gxx_personality_v0'
/usr/i586-mingw32msvc/lib/libsfml-window-s.a(Joystick.o):Joystick.cpp:(.eh_frame+0x11): undefined reference to `___gxx_personality_v0'
collect2: ld returned 1 exit status
似乎它具有一些外部依赖性。这些是什么,如何链接它们?
编辑:
这是我在命令行中输入的内容:
帮助将不胜感激。
最佳答案
我最近也有这个问题。
SFML是使用DW2异常处理进行编译的,但是默认的MinGW交叉编译器(在Debain和Ubuntu仓库中)使用SJLJ,并且它们彼此不兼容。我必须使用DW2异常处理程序构建自己的交叉编译器,并且可以完美地工作。另外,您可以使用现有的SJLJ编译器自己构建SFML,因此SFML也将是SJLJ。
我决定构建一个DW2编译器,因为它是更现代的方法,并且也是很好的练习。
关于c++ - 静态链接SFML库时MinGW中的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5292073/