我最近安装了 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
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到以下错误:
Undefined symbols for architecture x86_64:
"sf::String::String(char const*, std::__1::locale const&)", referenced from:
_main in window-48cb4a.o
Run Code Online (Sandbox Code Playgroud)
谷歌搜索后,我遇到了这个问题:SFML 2.1 RenderWindow linking error
在接受的答案中,该人说如果我想使用g++,我必须下载“GCC”版本。因此,我继续下载 GCC - 通用 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
Run Code Online (Sandbox Code Playgroud)
我还必须告诉编译器在哪里可以找到 SMFL 库:
-L /Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/lib
Run Code Online (Sandbox Code Playgroud)
我还需要告诉库加载器从哪里找到 SFML 库:
export LD_LIBRARY_PATH=/Users/.../Desktop/C++_Code/SMFL/SFML-2.1-osx-gcc-universal/lib
Run Code Online (Sandbox Code Playgroud)
然后,我将 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
但是,我不断收到同样的错误。我继续用 google 搜索该错误,但我不断得到的只是人们使用 Xcode 而不是终端的问题。任何帮助将不胜感激!
我终于明白了!首先,正如 Joachim Pileborg 指出的那样,我需要安装适用于 mac 的 clang 版本的 SFML,因为我使用 g++ 进行编译,这是变相的 clang++,正如 Joachim Pileborg 也指出的那样。接下来,我必须再次查看使用 Linux 设置 SFML 的说明 ( http://www.sfml-dev.org/tutorials/2.0/start-linux.php )。
然而,当我读到这个问题时,锦上添花的是:
...还有这个问题:
...这让我想到:也许我应该尝试将我的 freetype.framework 文件夹(可以在 extlibs 目录中找到)移动到我的 /Library/Frameworks 目录中。一旦我这样做并使用编译
g++ window.cpp -framework sfml-graphics -framework sfml-window -framework sfml-system
Run Code Online (Sandbox Code Playgroud)
编译运行成功!!!我现在很高兴!
| 归档时间: |
|
| 查看次数: |
4781 次 |
| 最近记录: |