Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

24.01.2010, 22:29

SFML RenderWindow Pufferüberladung

Hallo
Ich bin neu in Sachen C++ & SFML. Komme gerade aus der Konsolenwelt :D

Nun habe ich mich entschieden, mit der 2D Programmierung anzufangen, und wollte dafür SFML benutzen. Ich bin dem Tutorial auf der Seite nachgegangen, um es in Visual C++ Express 2008 einzubinden.

Jedoch gibt es bei mir bei einem RenderWindow das Problem, dass es eine Fehlermeldung gibt. Das Programm stürtzt ab und meldet eine Pufferüberladung.

Ich hab nun also keine Ahnung, wo das Problem liegt, ich benutze den Code aus dem Tutorial und habe auch schon andere ähnliche Codes versucht, die ich bei diversen Videos gesehen habe.

Der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 // Create the main rendering window

    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
    
    // Start game loop

    while (App.IsOpened())
    {
        // Process events

        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit

            if (Event.Type == sf::Event::Closed)
                App.Close();
        }

        // Clear the screen (fill it with black color)

        App.Clear();

        // Display window contents on screen

        App.Display();
    }

    return EXIT_SUCCESS;


Wie gesagt, der Code aus dem Tutorial.

danke für die Hilfe.
gruß Loki

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

2

24.01.2010, 22:33

Huhu!

Kannst du bitte den kompletten Code posten? Wenn ich das angegeben Listing kompiliere funktioniert es prima(einfach deins in ne standard main-Funktion kopiert):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <SFML/Graphics.hpp>


int main ()
{
    // Create the main rendering window

    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");
   
    // Start game loop

    while (App.IsOpened())
    {
        // Process events

        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit

            if (Event.Type == sf::Event::Closed)
                App.Close();
        }

        // Clear the screen (fill it with black color)

        App.Clear();

        // Display window contents on screen

        App.Display();
    }

    return EXIT_SUCCESS;

}

3

24.01.2010, 22:39

Also dass das ganze in ner Main-Funktion ist, dachte ich sei klargestellt.

Also von mir aus mein Code sieht genau so aus, wie du ihn mir eben gezeigt hast, da er ja genau so in dem Tutorial steht. Aber eben dieser Code verursacht eine Pufferüberladung.

Kann es sein, dass dann mit den Includes und Abhängigkeiten was falsch ist? Ich nehme nicht an, dass der Code falsch ist.
gruß Loki

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

4

24.01.2010, 22:40

Zitat von »"Lokikol"«

Also dass das ganze in ner Main-Funktion ist, dachte ich sei klargestellt.

Also von mir aus mein Code sieht genau so aus, wie du ihn mir eben gezeigt hast, da er ja genau so in dem Tutorial steht. Aber eben dieser Code verursacht eine Pufferüberladung.

Kann es sein, dass dann mit den Includes und Abhängigkeiten was falsch ist? Ich nehme nicht an, dass der Code falsch ist.


Es sah wie ein herausgerissener Code aus ;). Wollte nichts anmaßen :P
Dann ist, wie du schon sagtest, was mit den Includes/etc falsch...

Hast du die Debug und Releaseversionen verwechselt? Wenn du im Debug mode bist, müssen die libs am Ende ein "-d" haben. Also z.B. "sfml-window-d.lib"

5

24.01.2010, 22:52

Puh. Ja das wars wohl. Ich dachte, dass ich zum Programmieren auch einfach die sfml-graphics.lib und smfl-graphics.dll benutzen könnte.

Heißt das ich muss während ich Programmier immer die "-d"-Versionen benutzen, und erst wenn ich eine "fertige" Version meines Programms geschrieben habe auf die normalen, also oben genannten, libs und dlls zugreifen?
gruß Loki

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

24.01.2010, 22:53

Zitat von »"Lokikol"«

Puh. Ja das wars wohl. Ich dachte, dass ich zum Programmieren auch einfach die sfml-graphics.lib und smfl-graphics.dll benutzen könnte.

Heißt das ich muss während ich Programmier immer die "-d"-Versionen benutzen, und erst wenn ich eine "fertige" Version meines Programms geschrieben habe auf die normalen, also oben genannten, libs und dlls zugreifen?


Nene ;) Also bei den Projektoptionen kannst du links oben ja zwischen Debug- und Releaseversion wählen. Du musst alles also zweimal eintragen. Wenn du die libs einträgst, während Debug gewählt ist, machste dahinter immer ein "-d" und ansonsten lässt du es weg.

Dann kannst beruhigt programmieren ohne immer zu wechseln.

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

7

26.01.2010, 21:28

-s-d = Statisch für Debug
-d = Dynamisch für Debug
-s = Statisch für Release
ohne endung = Dynamisch für Release
wenn du dynamisch kompilieren willst musst du SFML_DYNAMIC noch definieren
dynamisch ist das die api in einer externen dll liegt
statisch das sie mit der exe zusammen gelinkt wird

Werbeanzeige