我已经用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混合使用。以下是两个产生相同错误的过程。
- 第一道工序
- 安装GCC版本
- 编译应用程序(成功)
- 安装Clang版本
- 运行您的应用程序
- 第二道工序
- 安装Clang版本
- 编译应用程序(成功)
- 安装GCC版本
- 运行您的应用程序
当您安装另一个运行时,您需要小心地从头开始重新构建您的应用程序。也就是说,在编译之前删除最终的二进制文件以及任何.o
文件。