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

killmichnich

unregistriert

1

26.09.2009, 15:08

sfml: Progrmm hängt sich wegen Sprite auf

Hiho,
ich hab mir jetzt mal gedacht ich schau mir mal sfml an, habs runtergeladen und auch schon n kleines testprogramm geschrieben. Das Problem dabei ist jetzt, dass sich das Programm, sobald ich ein Sprite lad, aufhängt.
Hier mal 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <SFML/Graphics.hpp>

using namespace std;

int main()
{
    /*sf::Clock Clock;
    while(Clock.GetElapsedTime()<5.0f)
    {
        cout <<Clock.GetElapsedTime()<< endl;
    }*/
    sf::RenderWindow App(sf::VideoMode(1280, 1024, 32), "SFML Window");

    sf::Image Image;
    if(!Image.LoadFromFile("Sprite.png"))
    {
        cout<<"Sprite konnte nicht geladen werden"<<endl;
    }
   //-----------------------------------------------

    sf::Sprite Sprite;
    Sprite.SetPosition(0, 0);
    Sprite.SetImage(Image);
    //-----------------------------------------------

    while(App.IsOpened())
    {
        sf::Event Event;
        while(App.GetEvent(Event))
        {
            if(Event.Type == sf::Event::Closed || (Event.Type==sf::Event::KeyPressed && Event.Key.Code == sf::Key::Escape))
            {
                App.Close();
            }
        }

            App.Clear();

            App.Draw(Sprite);

            App.Display();
    }

    return EXIT_SUCCESS;
}

Das programm hängt sich auf sobald ich es per X oder Esc schließe. Der Rückgabewert ist -1073741819 falls damit jemand was anfangen kann ^^
Sobald ich den oben durch - markierten bereich und das App.Draw() raus lass, funktioniert alles und beendet sich auch gescheit, ich hab nur kein Sprite ^^
Kann mir da wer sagen was ich falsch mach? ôO

2

26.09.2009, 15:37

Hm, ich sehe grad keinen Fehler. Versuch aber mal eine kleinere Auflösung.

Wenn du mit dem Debugger durchgehst, wo bleibt er hängen/was passiert?

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

3

26.09.2009, 15:53

komisch sowas ähnliches hatte ich neulich auch -.-

killmichnich

unregistriert

4

26.09.2009, 15:55

also auflösung hab ich geändert, hat nix gebracht =(
Debugger benutz ich nich, aber ich hab festgestellt, dass es funktioniert sobald ich Sprite.SetImage(Image); weglass, also wirds wohl iwas mit dem image zu tun haben oder ôO

@ Lerikson: Und was hast du dann gemacht? ^^

5

26.09.2009, 16:10

Stelle sicher, dass du die richtigen Bibliotheken linkst. Welche Konfiguration hast du (Debug/Release bzw. statisch/dynamisch), und welche zusätzlichen Abhängigkeiten hast du dem Linker angegeben? Wird der Fenstertitel richtig dargestellt oder siehst du was mit "ÿÿÿ"?

Und was für eine SFML-Version benutzt du?

killmichnich

unregistriert

6

26.09.2009, 16:14

also ... Build Target is Release und die Bibliotheken sind sfml-window.lib und sfml-graphics.lib, zu statisch bzw. dynamisch kann ich dir leider nix sagen :oops:

Edit: Vllt sollte ich mal noch dazu sagen dass ich ms vc++ 05/08 unter Code Blocks verwende, sfml version 1.5 für vc++ 08
Kp obs iwie weiterhilft ^^

7

26.09.2009, 16:33

Zitat von »"killmichnich"«

Edit: Vllt sollte ich mal noch dazu sagen dass ich ms vc++ 05/08 unter Code Blocks verwende
Das verstehe ich jetzt nicht. Was verwendest du für eine IDE, MSVC++ 2005, MSVC++ 2008 oder Code::Blocks?

Mit statisch/dynamisch meine ich, ob du statische Bibliotheken (.lib) oder dynamische DLLs (.dll) von SFML nutzt. Bei statischen müssten die angegebenen Bibliotheken nämlich noch ein -s haben, also zum Beispiel sfml-window-s.lib.

killmichnich

unregistriert

8

26.09.2009, 16:45

naja also was ich damit sagen wollte is dass ich code blocks mit dem compiler von vc++ 2008 nutze ^^

naja also ich habs jetzt mal die sfml-window-s.lib und die graphics-s.lib hinzugefügt und dann bekomm ich n paar viele errors ...
Die dlls dazu brauch ich auch im selben ordner (sfml-graphics.dll, sfml-window.dll und sfml-system.dll) sonst meckerts weil die dlls fehlen :/

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

9

26.09.2009, 16:59

Zitat

@ Lerikson: Und was hast du dann gemacht? ^^

VS beendet, geflucht, CSS gezockt, geflucht (weil ich immer drauf gegangen bin), VS Gestartet und mit DirectX gearbeitet ;)

10

26.09.2009, 17:06

Zitat von »"killmichnich"«

naja also ich habs jetzt mal die sfml-window-s.lib und die graphics-s.lib hinzugefügt und dann bekomm ich n paar viele errors ...
Die dlls dazu brauch ich auch im selben ordner (sfml-graphics.dll, sfml-window.dll und sfml-system.dll) sonst meckerts weil die dlls fehlen :/
Ok, dann linkst du wohl gegen die dynamischen SFML-Bibliotheken. Ist SFML_DYNAMIC definiert?

Hast du SFML überhaupt einmal rekompiliert (die Bibliothek selber)? Sonst versuchs mal, wenn du direkt auf MSVC++ 2008 arbeitest.

Wenn gar nichts hilft, kannst du auch mal im offiziellen Forum auf www.sfml-dev.org nachfragen. Vergiss dann aber nicht, all die relevanten Informationen wie Linkerangaben etc. mitzuteilen!

Werbeanzeige