0

cmakeにフラグを追加して、MacでC++11で動作させるための手順を使用してSFML2をコンパイルしました。

EclipseをIDEとして使用してライブラリを試すと、不明なシンボルが表示されます。使用しているコマンドは次のとおりです。

g++-4.7 -L/usr/local/lib -std=c++11 -o "Breakout"  ./main.o   -lsfml-window -lsfml-system -lsfml-graphics

それが吐き出すエラーは次のとおりです。

Undefined symbols for architecture x86_64:
"sf::RenderWindow::RenderWindow(sf::VideoMode, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, sf::ContextSettings const&)", referenced from:
  _main in main.o

このコードの使用:

#include <SFML/Graphics.hpp>

int main () {
    sf::RenderWindow window(sf::VideoMode(800,600), "window");
    return 1;
}

問題は、SFMLがClangでコンパイルされており、GCC4.7を使用していることだと思います。GCCを使用してSFMLをコンパイルすることはできません。これは、ObjectiveCとCocoaのものについて不平を言うためです。私はそれを避けることができれば、IDE用のEclipseが好きなので、このプロジェクトではClangに切り替えたくありませんが、Clangのサポートはくだらないです。

編集:私はほとんど忘れていました、Linuxではすべてが正常に動作します。私は移植しているプロジェクトを持っていて、物事をテストするためにブレイクアウトクローンを作成しようとしていました。私がすでに持っているプロジェクトはかなり大きいので、できるだけ多くの作業を避けたいと思います。

4

2 に答える 2

0

私は解決策を考え出しました。SFML Web サイトからコンパイル済みのライブラリを使用すると、正常にコンパイルされます。私の質問は、なぜですか?それらは同じように動作し、同じメソッドを使用してコンパイルされたと思います。

于 2013-03-20T19:58:17.690 に答える
0

C++11 をサポートする SFML をコンパイルするには、(入門チュートリアルで説明されているように) 2 つのツールが必要です: libc++での clang。

libc++ と libstdc++ には、S(T)L の 2 つの異なる実装があります。それがここの問題です。

残念ながら、魔法のような解決策はありません。C++11 なしで SFML を使用するか、g++ 4.7 および C++11 サポートでコンパイルされた SFML を取得する必要があります。もちろん、別の IDE を使用することもできます。

SFML は非公式のコンパイラを公式にはサポートしないことに注意してください。ただし、試してみて、公式フォーラムで経験を共有することは大歓迎です。

于 2013-03-21T19:33:00.237 に答える