2013-07-28 65 views
0

我用g ++编译了我的SFML程序,现在似乎工作正常(以前有问题),但是当我尝试运行结果输出时,以下错误消息:SFML 2.1&“懒惰符号绑定失败”

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,而不是一些晦涩的业余项目。那是怎么回事?

+0

它在我的电脑上工作得很好。 (10.8)您是否使用GCC的自定义版本或Xcode CLT附带的版本? – Hiura

+0

我有版本附带的版本:| –

+0

Apple提供的gcc版本太老了......你最好使用clang/libC++(就像你在其他问题中提到的那样,这里有很多理由)。 – Hiura

回答

0

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

  • 第一个过程
    1. 安装GCC版本
    2. 编译应用程序(成功)
    3. 安装锵版本
    4. 运行应用程序
  • 第二个过程
    1. 安装L时锵版本
    2. 编译应用程序(成功)
    3. 安装GCC版本
    4. 运行应用程序

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

+0

应用程序是相同的简单测试程序(真的打开一个新窗口)。我删除了输出文件并重新编译程序无济于事,每次都得到相同的错误。我认为可能有一些问题,dylib不遵循正确的版本。我会尝试重新安装SFML。再次。叹。 –

+0

DAAAAMMMNNN终于成功了! :D感谢一千次!我清理了所有的dylib文件,然后将GCC的文件放回原位并运行。不要紧,窗口上显示的东西是胡言乱语哈哈哈我可以执行该程序,所以这足以让我现在开心。 –

相关问题