0

我已经用 g++ 编译了我的 SFML 程序,现在似乎工作正常(以前有问题),但是当我尝试运行结果输出时,我收到以下错误消息:

dyld: lazy symbol binding failed: Symbol not found: __ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE
  Referenced from: /Users/fabricecastel/Work/Game_Projects/SFML_tutorials/./a.out
  Expected in: /usr/local/lib/libsfml-graphics.2.dylib

dyld: Symbol not found: __ZN2sf12RenderWindowC1ENS_9VideoModeERKNS_6StringEjRKNS_15ContextSettingsE
  Referenced from: /Users/fabricecastel/Work/Game_Projects/SFML_tutorials/./a.out
  Expected in: /usr/local/lib/libsfml-graphics.2.dylib

Trace/BPT trap: 5

我检查了有问题的文件夹,并且 libsfml-graphics.2.dylib 没有丢失。除此之外,我完全不知道问题是什么以及我应该如何解决它。在我看来,RenderWindow 符号不包含在 dylib 中,但它应该包含。我们在这里谈论的是 SFML 2.1,而不是一些不起眼的业余项目。那是怎么回事?

4

1 回答 1

0

我可以重现这些错误的唯一方法是混合使用GCC 和 Clang 版本的 SFML。以下是产生相同错误的两个过程。

  • 第一道工序
    1. 安装 GCC 版本
    2. 编译你的应用程序(成功)
    3. 安装 Clang 版本
    4. 运行您的应用程序
  • 第二道工序
    1. 安装 Clang 版本
    2. 编译你的应用程序(成功)
    3. 安装 GCC 版本
    4. 运行您的应用程序

当您安装另一个运行时,您需要从头开始仔细重建您的应用程序。也就是说,在编译之前删除最终的二进制文件以及任何.o文件。

于 2013-07-29T09:54:51.933 回答