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

Werwofl

Treue Seele

  • »Werwofl« ist der Autor dieses Themas

Beiträge: 100

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

22.02.2011, 14:25

SFML - Sprite Tut. Bild nicht gefunden

Moin moin,

ich bin grade dabei die SFML durchzuarbeiten. Ich bin momentan im Diplaying a Sprite-Kapitel. Dort komme ich aber nicht weiter, weil er ständig aus der LoadFromFile Bedingung reinspringt.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
    Image image;
    RenderWindow app(VideoMode(800,600,20),"SFML Graphics");

    if(!image.LoadFromFile("sprite.jpeg")){
        cout<<"Not loaded"<<endl;
    //  system("PAUSE");
        return EXIT_FAILURE;
    }


Frage ist jetzt kann die LoadFromFile-Methode überhaupt JPEG's laden ? Wenn ja von wo lädt er die, aus dem .exe Verzeichniss meines Programms?

2

22.02.2011, 15:37

Hallo Werwofl,

ja die SFML kann JPEG Grafiken laden. Wenn du deine Anwendung aus der IDE ausführst, dann beziehen sich alle relativen Datei- und Pfadangaben auf das Projektverzeichnis, also das Verzeichnis wo die .sln liegt (gesetzt dem Fall das du Visual C++ benutzt).

Gruß
SaRu_

3

22.02.2011, 16:07

Zum Verzeichnis:
Es gibt da so etwas, das nennt sich "Ausführungsverzeichnis", von dort gehen relative Pfadangaben aus.
Wenn du auf die .exe doppelklickst, ist es das Verzeichnis wo sie liegt.
Wenn du in visual Studio auf ausführen gehst, ist es das, was an entsprechender Stelle in den Projekteinstellungen angegeben ist, standardmäßig das Projektverzeichnis, wie SaRu auch schon sagte.
Wenn du über ne Verknüpfung startest ist es das, was in den Eigenschaften unter "Ausführen in" steht.

4

22.02.2011, 16:15

Was meinst du damit?

Zitat

Dort komme ich aber nicht weiter, weil er ständig aus der LoadFromFile Bedingung reinspringt.

Meinst du rausspringt?
Er tut das was im Anweisung Block steht nur wenn das Bild nicht geladen wurde,
oder, was soll sonst das Problem sein?

Werwofl

Treue Seele

  • »Werwofl« ist der Autor dieses Themas

Beiträge: 100

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

5

22.02.2011, 19:15

Danke für die Antworten.

Aber jetzt hab ich mir wahrscheinlich irgendwas kapuut gemacht.
Während der Laufzeit ploppt folgende Fehlermeldung auf

"A buffer overrun has occurred in SFML_Sprites.exe which has corrupted the program's internal state. Press Break to debug the program or Continue to terminate the program."

Und das hier steht im Debug Output:

Zitat

'SFML_Sprites.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Users\niels\Documents\Visual Studio 2010\Projects\SFML_Sprites\Debug\sfml-graphics.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\opengl32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\advapi32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\sechost.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\rpcrt4.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\gdi32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\user32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\lpk.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\usp10.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\glu32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\ddraw.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\dciman32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\setupapi.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\cfgmgr32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\oleaut32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\ole32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\devobj.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\dwmapi.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Users\niels\Documents\Visual Studio 2010\Projects\SFML_Sprites\Debug\sfml-window.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\winmm.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Users\niels\Documents\Visual Studio 2010\Projects\SFML_Sprites\Debug\sfml-system.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4974_none_50940634bcb759cb\msvcp90.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4974_none_50940634bcb759cb\msvcr90.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\msvcp100d.dll', Symbols loaded.
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded.
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\imm32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\msctf.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\ig4icd32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\cryptbase.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\dinput.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\hid.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\wintrust.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\crypt32.dll', Cannot find or open the PDB file
'SFML_Sprites.exe': Loaded 'C:\Windows\System32\msasn1.dll', Cannot find or open the PDB file
First-chance exception at 0x0100a800 in SFML_Sprites.exe: 0xC0000005: Access violation reading location 0x0100a800.
A buffer overrun has occurred in SFML_Sprites.exe which has corrupted the program's internal state. Press Break to debug the program or Continue to terminate the program.

For more details please see Help topic 'How to debug Buffer Overrun Issues'.
The program '[172] SFML_Sprites.exe: Native' has exited with code 0 (0x0).
Kann mir jmd sagen was ich mir da kaputt gemacht habe.
Unter Properties->VC++-Directories habe ich include- und lib-Path angegeben.
Unter Properties->Linker->Input

sfml-system.lib
sfml-graphics.lib
sfml-window.lib

eingetragen.

Im Verzeichnis liegen auch die dementsprechenden *.dll sprich sfml-system.dll,sfml-system.dll,sfml-graphics.dll.

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

6

22.02.2011, 19:24

Hey,
wie ich sehen kann benutzt du Visual Studio 2010 (?)
Hast du denn auch die speziell für SV 2010 kompilierten Dateien von der SFML benutzt?
Ich hatte nämlich mal ein ähnliches Problem was von VS 2010 mit den "falschen" lib Dateien von VS 2008 zusammenhing, denn jetzt benutze ich wieder VS 2008 und habe dieses Problem nicht mehr...;)
Denn soweit ich weiß sind die libs von der offiziellen Seite nur für VS 2008....(wenn nicht haut mich ;) )
Errare est humanum. -Windows ist menschlich ;-)

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

7

22.02.2011, 19:41

"Cannot find or open the PDB file" hat gar nichts zu sagen.
"Access violation reading location 0x0100a800" ist die wichtigste Zeile der Ausgabe. Sie besagt dir, dass es eine Speicherzugriffsverletzung (durch Null-Pointer o. ä.) gab. Das heißt, du musst nun mit dem Debuger herausfinden, wo sie auftritt. Oder einfach beim Auftreten des Fehlers auf "Unterbrechen" klicken. Der Debuger sollte zur releventen Stelle im Code springen.

Werwofl

Treue Seele

  • »Werwofl« ist der Autor dieses Themas

Beiträge: 100

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

8

22.02.2011, 19:55


"Cannot find or open the PDB file" hat gar nichts zu sagen.
"Access violation reading location 0x0100a800" ist die wichtigste Zeile der Ausgabe. Sie besagt dir, dass es eine Speicherzugriffsverletzung (durch Null-Pointer o. ä.) gab. Das heißt, du musst nun mit dem Debuger herausfinden, wo sie auftritt. Oder einfach beim Auftreten des Fehlers auf "Unterbrechen" klicken. Der Debuger sollte zur releventen Stelle im Code springen.
Das habe ich mir auch gedacth dann springt er aber in gs_report.c nach

C-/C++-Quelltext

1
2
3
#if defined (_CRTBLD) && !defined (_SYSCRT)
    DebuggerWasPresent = IsDebuggerPresent();
    _CRT_DEBUGGER_HOOK(_CRT_DEBUGGER_GSFAILURE);


@Lerikson danke ich werds mal Versuchen ;)

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

9

22.02.2011, 21:04

Dann musst du den Aufruf-Stack einfach bis zu deiner Funktion zurückverfolgen ;)

Ich halte es für ganz großen Unsinn nur aus Bequemlichkeitsgründen einen älteren Compiler zu verwenden. Versuche lieber dein Problem zu lösen, bevor du Visual Studio 2008 verwendest.

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

10

22.02.2011, 21:35

Zitat

Ich halte es für ganz großen Unsinn nur aus Bequemlichkeitsgründen einen älteren Compiler zu verwenden. Versuche lieber dein Problem zu lösen, bevor du Visual Studio 2008 verwendest.


Ich würde es nicht Unsinn nennen sondern max. Bequemlickeit, ein großer Unterschied zwischen VS2010 und 2008 ist mir bisher nicht aufgefallen (lasse mich aber dennoch gern belehren)
Schließlich ist es irgendwo auch eine Geschmackssache, welche IDE man bevorzugt, aber wie gesagt mich würden deine Argumente sehr interessieren ;)
Errare est humanum. -Windows ist menschlich ;-)

Werbeanzeige