SFML 2.1 & "lazy symbol binding failed"



我已经用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,而不是一些晦涩的业余项目。怎么了?

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

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

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

相关内容