【问题标题】:SFML 2.1 & "lazy symbol binding failed"SFML 2.1 &“惰性符号绑定失败”
【发布时间】:2013-07-28 19:13:58
【问题描述】:

我已经用 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,而不是一些不起眼的业余项目。这是怎么回事?

【问题讨论】:

  • 它在我的电脑上运行良好。 (10.8) 您使用的是自定义版本的 GCC 还是 Xcode CLT 附带的版本?
  • 我有 Xcode 附带的版本:|
  • Apple 提供的 gcc 版本太旧了......你最好使用 clang/libc++ (正如你在另一个问题中提到的,有很多理由这样做)。

标签: lazy-evaluation sfml symbols dylib


【解决方案1】:

我可以重现这些错误的唯一方法是混合GCC and Clang version of SFML。下面是两个产生相同错误的过程。

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

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

【讨论】:

  • 应用程序是同一个简单的测试程序(真的是打开一个新窗口)。我删除了输出文件并重新编译程序无济于事,每次都得到相同的错误。我认为可能存在一些问题,即 dylib 不遵循正确的版本。我会尝试重新安装 SFML。再次。叹息。
  • DAAAAMMMNNN 终于成功了! :D 感谢一千遍!我清理了所有的 dylib 文件并将 GCC 文件放回去,它可以工作了。别介意窗口上显示的东西是胡言乱语哈哈哈我可以执行程序,这足以让我现在开心。
猜你喜欢
  • 2016-03-18
  • 2013-02-16
  • 2020-11-24
  • 1970-01-01
  • 2014-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多