3

我有一个在 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

似乎它有一些外部依赖项。那些是什么,我如何链接它们?

编辑:

这是我在命令行中输入的内容:

i586-mingw32msvc-g++ "./main.cpp" -o "./win32.exe" /usr/i586-mingw32msvc/lib/libsfml-graphics-sa /usr/i586-mingw32msvc/lib/libsfml-window-sa / usr/i586-mingw32msvc/lib/libm.a /usr/i586-mingw32msvc/lib/libmsvcr90.a

帮助将不胜感激。

4

2 回答 2

1

我最近也有这个问题。

SFML 是使用 DW2 异常处理编译的,但默认的 MinGW 交叉编译器(在 Debain 和 Ubuntu 存储库中)使用 SJLJ,它们彼此不兼容。我必须用 DW2 异常处理构建我自己的交叉编译器,而且它完美无缺。或者,您可以使用现有的 SJLJ 编译器自行构建 SFML,因此 SFML 也将是 SJLJ。

我决定构建一个 DW2 编译器,因为它是更现代的方法,也是一个很好的练习。

于 2011-03-14T12:07:20.610 回答
0

确保你使用 g++ 而不是 gcc,应该修复它。从头开始(在重建之前清理所有内容)。另一个选项可能是这里描述的,假设您已经使用 g++ 并且仍然得到它。

于 2011-03-13T20:23:34.880 回答