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

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

1

05.07.2010, 16:30

Image-Instanz in SFML

Hallo,

habe ein grundlegendes Problem in SFML, dass ich keine Image-Instanz für ein neues Bild erzeugen kann. Hier mein 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
#include <iostream>
#include <string>
#include <SFML\Graphics.hpp>
#include <SFML\Window.hpp>
using namespace std;

//Hauptprogramm
int main()
{
    //Fenster erstellen
    sf::RenderWindow Fenster (sf::VideoMode (800, 600, 32), "Testfenster");

    //Fenster anzeigen
    Fenster.Display();

    //Bild laden
    sf::Image Gra_Spieler;
    Gra_Spieler.LoadFromFile ("images/player.tga");

    //Sprite erzeugen
    sf::Sprite Spr_Spieler(Gra_Spieler);

    //Sprite-Koordinaten
    Spr_Spieler.SetX (200);
    Spr_Spieler.SetY (100);
    Spr_Spieler.SetPosition (200, 100);

    ...
    //Hauptschleife
    ...
}

Das Problem ist, dass sich mein Fenster direkt schließt und folgende Fehlermeldung ausgibt:

"Unbehandelte Ausnahme bei 0x43003d00 in test.exe: 0xC0000005:
Zugriffsverletzung beim Lesen an Position 0x43003d00."


Ich kann den ganzen Quellcode bis auf die Erzeugung der Image-Instanz in Zeile 17 löschen, trotzdem dieser Fehler. SFML kann also keine Image-Instanz erzeugen ?(
Auch der Pfad zum Bild stimmt. Habe schon einen falschen Pfad ausprobiert, wo er auch eine Fehlermeldung ausgab, dass das Bild nicht existiert. Aber er findet das Bild ja, nur kann er keine Instanz erzeugen.

Bin für jede Hilfe dankbar!

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

2

05.07.2010, 16:41

Bist du dir sicher, dass es in Z.18 abstürtzt? scheinbar schon.

Ansonsten: Pfad überprüfen, Achtung: beim Start aus der Entwicklungsumgebung heraus wird der Projektpfad, nicht der Debug/Release-Ordner genutzt!

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

3

05.07.2010, 16:48

Hi also ich mache immer

C-/C++-Quelltext

1
2
3
static sf::Image Image = sf::Image();
Image.LoadFromFile("Data\\Models\\Caveman\\Caveman.png");
Sprite.SetImage(Image)


Der pfad stimmt glaub ich so nicht wie du das machst

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

4

05.07.2010, 16:50

Wenn ich im Quellcode alles unter Fenster.Display(); lösche, funktioniert das Programm und das Fenster wird angezeigt. Sobald ich aber wieder eine Instanz erstellen will (sf::Image Bild), stürzt es mit dem genannten Fehler ab. Dabei brauche ich noch garnicht einen Pfad zu wählen. Schon die Erzeugung der Klasseninstanz vom Typ Image macht er nicht, was doch sehr merkwürdig ist.

Ist das evtl. ein Lib-Problem? Habe folgende Libs im Linker eingetragen:
- sfml-window.lib
- sfml-graphics.lib
- sfml-system.lib

Habe es auch schon mit Debug-Libs (mit Präfix -d) probiert, klappt ebenfalls nicht...

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

5

05.07.2010, 16:54

Hi also ich mache immer

C-/C++-Quelltext

1
2
3
static sf::Image Image = sf::Image();
Image.LoadFromFile("Data\\Models\\Caveman\\Caveman.png");
Sprite.SetImage(Image)


Der pfad stimmt glaub ich so nicht wie du das machst

Ah Danke! Das Wörtchen "static" hat den Fehler behoben. Danke :D
Der Pfad stimmt so, wie ich ihn geschrieben habe. Der Compiler meckert nicht.

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

6

05.07.2010, 16:56

Du solltest auch mit einer If Abfrage prüfen , ob das Bild geladen wurde.

C-/C++-Quelltext

1
2
if ( ! Image.LoadFromFile ( "Bild,jpg" ) )
    return -1 ;

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

05.07.2010, 17:00

nicht gerade elegant gelöst.
welche sfml-version und ide benutzt du? hast du sie selbst kompiliert oder fertig heruntergeladen?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

8

05.07.2010, 17:02

ich benutze SFML v1.6 mit Visual C++ 2010 Express Edition.

Habe mich nach den Tutorials der SFML-Website gerichtet, wie man Bilder und Sprites lädt und erstellt.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

05.07.2010, 17:03

dann musst du die sfml nochmal selbst kompilieren. wenn du willst kann ichs dir auch schon fertig schicken.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Rion

Frischling

  • »Rion« ist der Autor dieses Themas

Beiträge: 23

Wohnort: Trier

Beruf: Komponist, Medienassistent

  • Private Nachricht senden

10

05.07.2010, 17:08

Ja, wäre gut, wenn dus schickst.

Werbeanzeige