【问题标题】:SFML 2.1 Code::Blocks Static linking not working,SFML 2.1 Code::Blocks 静态链接不起作用,
【发布时间】:2014-10-15 13:47:22
【问题描述】:

我不熟悉在 C++ 中链接库的想法,并且正在尝试让 SFML 与 C++ 一起工作。我在 Windows 7 64 位上并且正在使用代码块。我已经下载了 SFML 的 32 位 mingw GCC SFML DW2 版本。我按照本教程:http://www.sfml-dev.org/tutorials/2.0/start-cb.php 设置代码块。我正在静态链接库。当我按下“构建”按钮时,我会收到一大堆错误,其中未定义对“__Unwind_Resume”和“__gxx_personality_v0”的引用。我已经查找了这个问题,并且只找到了使用 g++ 而不是 gcc 的命令行修复程序。我无法在代码块 UI 中执行此操作。有人可以帮帮我吗?

【问题讨论】:

  • 我最近才这样做。容易错过的设置部分:“...如果您想摆脱这些 DLL 并将 SFML 直接集成到您的可执行文件中,您必须链接到静态版本。静态 SFML 库具有“-s”后缀:“sfml -xxx-sd”用于调试,“sfml-xxx-s”用于发布。”确保您使用的是那些“...s...”版本。
  • @Conduit 我很确定我做到了。在 Project->Build Options->Linker settings 我有 sfml-graphics-s-d 等用于调试和 sfml-graphics-s 等用于发布。有什么我错过的吗?
  • 我唯一能想到的其他事情是添加库的顺序(列表中从第一个到最后一个:音频、网络、图形、窗口、系统)以及编译器设置中对 SFML_STATIC 的定义...
  • OP 是正确的,他必须以某种方式指定他需要使用g++ 而不是gcc 作为链接器。不过,我不知道 code::blocks 是否足以为您指明正确的方向。
  • 不,买 32 位的。 code::blocks 附带的编译器是 32 位的,因此它可能不适用于 64 位代码

标签: c++ gcc g++ sfml


【解决方案1】:

code::blocks 附带的编译器版本是 32 位 4.7 TDM-SJLJ 版本,因此您需要使用相同编译器编译的 SFML 版本(GCC 4.7 TDM (SJLJ) - 32 bits)

如果要使用64位版本的库需要安装64位版本的编译器,可用here

【讨论】:

    【解决方案2】:

    将settings->compiler->toolchains中的链接程序改成g++.exe或者mingw-g++.exe

    【讨论】:

    • 即使这次问题有所不同,这个答案可能对从 Google 找到此页面的人有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多