SFML c++
SFML c++
Hey,
folgendes Problem, Ich arbeite nun schon eine Weile an einem kleinen Spiel mit Hilfe der SFML in Visual Studio.
Nun habe ich einmal ausprobiert ob auch im Release build alles so funktioniert wie es soll und das tut es auch.
Mein Problem ist jetzt nun aber, das ich im Projekt nur noch Texturen verwenden kann die ich auch schon vor den Release build, im Projekt Ordner hatte.
Wenn ich versuche eine Textur zu wechseln bekomme ich in der Konsole immer die Fehlermeldung "Failed to load image ... Reason: Unable to open file".
Habe natürlich überprüft ob der Pfad und die Schreibweise stimmen.
Jmd eine Ahnung woran das liegen könnte?
folgendes Problem, Ich arbeite nun schon eine Weile an einem kleinen Spiel mit Hilfe der SFML in Visual Studio.
Nun habe ich einmal ausprobiert ob auch im Release build alles so funktioniert wie es soll und das tut es auch.
Mein Problem ist jetzt nun aber, das ich im Projekt nur noch Texturen verwenden kann die ich auch schon vor den Release build, im Projekt Ordner hatte.
Wenn ich versuche eine Textur zu wechseln bekomme ich in der Konsole immer die Fehlermeldung "Failed to load image ... Reason: Unable to open file".
Habe natürlich überprüft ob der Pfad und die Schreibweise stimmen.
Jmd eine Ahnung woran das liegen könnte?
Re: SFML c++
Du benutzt nur einen Ordner für deine Texturen?
Oder einen für das Release und einen für Debug?
Oder einen für das Release und einen für Debug?
Re: SFML c++
Habe den gleichen Ordner in beide Verzeichnisse Kopiert.
Re: SFML c++
Sehr seltsam....
also ich kann da nur raten:
- falschen Pfad angegeben?
Aber du bist dir ja sicher, dass das nicht der grund ist....sorry: mehr fällt mir da auch nicht ein
also ich kann da nur raten:
- falschen Pfad angegeben?
Aber du bist dir ja sicher, dass das nicht der grund ist....sorry: mehr fällt mir da auch nicht ein
Re: SFML c++
Ja war das erste was ich geprüft habe und das Dateiformat natürlich.
- xq
- Establishment
- Beiträge: 1590
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: SFML c++
Kannst du in deinem Projektordner mal den Befehl "tree" in der Eingabeaufforderung ausführen und hier posten? Zudem die verwendeten Pfade der Bilddateien und das Ausführungsverzeichnis.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in
Zig
und nervt Leute damit.
Programmiert viel in
Re: SFML c++
Ist das, das richtige?
Pfad:assets\\gfx\\datei.png
Was meinst du mit Ausführungsverzeichniss?
Pfad:assets\\gfx\\datei.png
Was meinst du mit Ausführungsverzeichniss?
- Schrompf
- Moderator
- Beiträge: 5153
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: SFML c++
Deine Exe landet in unterschiedlichen Verzeichnissen, je nachdem, welche Build-Konfiguration Du benutzt. In den Bild sehe ich die Verzeichnisse "Debug" (stimmt für Debug-Konfig) und "Game" (was völliger Quatsch ist, denn die Release-Konfig schreibt die Exe nach Release/).
Meine Empfehlung lautet daher eher, mal die Ausgabepfade gerade zu ziehen. Falls Visual Studio, rechte Maustaste auf dem Projekt, was die Exe erstellt, "Eigenschaften" auswählen, links in der Kategorie "Allgemein" auswählen und dann in der Eigenschaften-Liste rechts das "Ausgabeverzeichnis" einstellen auf z.B. "$(SolutionDir)Game". Das musst Du für Debug und Release jeweils separat machen, indem Du die Änderung übernimmst und dann in der oberen Zeile die "Konfiguration" und/oder "Plattform" auswählst. Dabei könntest Du auch gleich der Release-Exe einen anderen Namen geben. Ich habe unter "Zielname" z.b. stehen: "$(ProjectName)_$(Configuration)_$(PlatformShortName)", was dann z.B. in sowas wie "TollesSpiel_Release_x64.exe" resultiert.
Meine Empfehlung lautet daher eher, mal die Ausgabepfade gerade zu ziehen. Falls Visual Studio, rechte Maustaste auf dem Projekt, was die Exe erstellt, "Eigenschaften" auswählen, links in der Kategorie "Allgemein" auswählen und dann in der Eigenschaften-Liste rechts das "Ausgabeverzeichnis" einstellen auf z.B. "$(SolutionDir)Game". Das musst Du für Debug und Release jeweils separat machen, indem Du die Änderung übernimmst und dann in der oberen Zeile die "Konfiguration" und/oder "Plattform" auswählst. Dabei könntest Du auch gleich der Release-Exe einen anderen Namen geben. Ich habe unter "Zielname" z.b. stehen: "$(ProjectName)_$(Configuration)_$(PlatformShortName)", was dann z.B. in sowas wie "TollesSpiel_Release_x64.exe" resultiert.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: SFML c++
Danke vielmals, das hat super funktioniert! :)
Re: SFML c++
Das Problem wurde ja anscheinend schon gelöst, aber:
Ich bekomme also statt
Relative Pfade sind nützlich, aber auch eine beliebte Fehlerquelle. Deshalb habe ich vor ~100 Jahren meine Exceptionklasse um folgende nützliche Funktion erweitert:Jack hat geschrieben: Wenn ich versuche eine Textur zu wechseln bekomme ich in der Konsole immer die Fehlermeldung "Failed to load image ... Reason: Unable to open file".
Habe natürlich überprüft ob der Pfad und die Schreibweise stimmen.
Code: Alles auswählen
Filename::Filename(string Filename)
{
m_Filename=Filename;
m_AbsFilename=lexical_cast<string>(filesystem::absolute(filesystem::path(Filename)));
}
die MeldungFailed to open 'Textures/House.png'
Und seitdem hab ich so Probleme nicht mehr. In gute Fehlermeldungen investierte Zeit, ist gut investierte Zeit!Failed to open 'Textures/House.png'; loaded at 'C:\Projects\Game\Debug\WeirdSubDir\Textures\House.png'
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
- xq
- Establishment
- Beiträge: 1590
- Registriert: 07.10.2012, 14:56
- Alter Benutzername: MasterQ32
- Echter Name: Felix Queißner
- Wohnort: Stuttgart & Region
- Kontaktdaten:
Re: SFML c++
Das is ne gute Idee!
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…
Programmiert viel in
Zig
und nervt Leute damit.
Programmiert viel in