2011-12-11 19 views
1

今はVisual Studio 2010でSFMLを使用しようとしていますので、SFML内のライブラリを使用してWindowsアプリケーションやゲームを作成する方法を学ぶことができます。私はチュートリアルhereを開いて新しいウィンドウを開いていますが、私のプログラムはすぐに壊れるようです。私は本当に理由を知らない:S。ビルドとコンパイルするようだが、その後破る:Visual Studio 2010でSFMLを使用する

は編集:それはこのラインで破る:App.Create(sf::VideoMode(800, 600, 32), "SFML Window");

#include <SFML/Window.hpp> 

int main() 
{ 
    sf::Window App; 
    App.Create(sf::VideoMode(800, 600, 32), "SFML Window"); 
    bool Running = true; 
    while (Running) 
    { 
     sf::Event Event; 
     while (App.GetEvent(Event)) 
     { 
      if (Event.Type == sf::Event::Closed) 
       Running = false; 

      if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape)) 
       Running = false; 

     } 
     App.Display(); 
    } 

    return EXIT_SUCCESS; 
} 

また、私は注意する必要があります。SFMLのウェブサイトに 、チュートリアルをVisual Studioを使ってセットアップするのは、VS 2008(VSとのSFMLの設定)のようです。私はVS2010用の一連の指示を受け取り、それをセットアップしました。 SFMLライブラリが動作しているかどうかをテストするために短いプログラムを使用しました:

#include <SFML/System.hpp> 
#include <iostream> 

int main() 
{ 
    sf::Clock Clock; 
    while (Clock.GetElapsedTime() < 5.f) 
    { 
     std::cout << Clock.GetElapsedTime() << std::endl; 
     sf::Sleep(0.5f); 
    } 

    return 0; 
} 

^このプログラムはうまくいきました。

答えて

2

SFMLライブラリはVisual Studio 2008用にコンパイルされています。VS2010でSFMLライブラリを使用すると、動作します。破損したスタックに関するメッセージが表示され、特定の関数(App.Clear()など)を呼び出すと他のハードクラッシュが発生する可能性があります。

ライブラリのソースコードを自分で再コンパイルするか、他の誰かが行ったバージョンを見つける必要があります。 SFMLサイトのフォーラムを検索すると、2010年にコンパイルされたlibsへのリンクがいくつか見つかります。

遅くとも、私は知っています...しかし、この質問まだすべての時間来ています。

+0

うん、そうだよ。私はこれを後で考え出し、再コンパイルされたdllのセットを得ました。すべて正常に動作します。 – Rohit

0

RenderWindowの代わりにWindowを使用したため、ここでエラーが発生していることは間違いありません。

+0

あなたがラインについて話しているなら: sf :: Window App; ...あなたの提案をテストしただけで、まだ動作しません。プログラムは、RenderWindowを使って完全に構築することさえできません。それは全くそれを認識しません。ウィンドウを使用するとビルドされますが、実行時に破損します。 また、OPのリンクのいくつかを修正しました。私はこれを貼り付けたときに彼らが壊れたことを知らなかった。 – Rohit

+0

'RenderWindow'は2D描画用です。描画はありません。「ウィンドウ」を使用しても構いません。 –

関連する問題