我最近安装了SFML 2.1,正在尝试从终端(而非Xcode)编译和运行它们网站上的示例程序。该程序的网址是http://www.sfml-dev.org/tutorials/2.0/start-linux.php。
Path to where I installed SFML:
/Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal
然而,我一直遇到以下错误:
Undefined symbols for architecture x86_64:
"sf::String::String(char const*, std::__1::locale const&)", referenced from:
_main in window-48cb4a.o
在谷歌搜索后,我发现了这个问题:SFML 2.1 RenderWindow链接错误 在被采纳的答案中,该人说如果我想使用g++,我必须下载“GCC”版本。所以,我继续下载了GCC - universal 32+64位(OS X 10.5+)版本,并按照Linux上安装和编译SFML的说明进行操作,因为没有适用于Mac的说明(http://www.sfml-dev.org/tutorials/2.0/start-linux.php),具体步骤如下:
由于我将SFML安装在非标准位置,所以我告诉编译器在哪里找到头文件,方法如下:
-I /Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/Frameworks/SFML.framework/Headers
我还需要告诉编译器在哪里找到SMFL库:
-L /Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/lib
我需要告诉库加载器从哪里找到SFML库:
export LD_LIBRARY_PATH=/Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/lib
然后,我将sfml-audio.framework、sfml-window.framework、sfml-graphics.framework、sfml-network.framework和sfml-system.framework放在我的Frameworks目录(/Library/Frameworks)中。
最后,我尝试以下两种方式编译我的程序:
g++ window.cpp -I /Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/Frameworks/SFML.framework/Headers/SFML -L /users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/lib -framework sfml-graphics -framework sfml-window -framework sfml-system
g++ window.cpp -framework sfml-graphics -framework sfml-window -framework sfml-system
g ++
来构建所迷惑,实际上使用的是clang ++
。 - Some programmer dude