【问题标题】:Problems in MinGW when statically linking SFML libraries静态链接 SFML 库时 MinGW 中的问题
【发布时间】:2011-07-14 14:33:00
【问题描述】:

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

我们将不胜感激。

【问题讨论】:

  • 你能发布你的编译行吗?这些错误看起来就像您尝试使用 gcc 而不是 g++ 编译/链接 C++ 代码时发生的情况。

标签: c++ sfml


【解决方案1】:

我最近也遇到了这个问题。

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

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

【讨论】:

  • 嗯...我可以把我自己构建的 DW2 交叉编译器发给你,但我不能保证它也能在你的机器上工作......我打算写关于构建的文章过程在我的博客中,但这是匈牙利语。
  • 哦,如果你不打算从 Linux 为 Windows 编译它,(所以你不打算交叉编译),那么你只需要下载一个 MinGW 包,它使用 DW2 ,因此不需要编译器构建。 MinGW 的 TDM 版本有两个版本打包恕我直言,但“股票”MinGW 是 DW2。但是固定。例如,CodeBlocks 包含带有 SJLJ 的 TDM 版本,这就是它在开始时无法正常工作的原因。对不起,我以为你想交叉编译。
  • 我确实想要交叉编译,但我想我会尝试在 Windows 上编译它,因为它可能比构建交叉编译器更容易。非常感谢。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多