SDL mit DevC++

_Stefan

Grünschnabel
Hallo,

Ich interressiere mich für dieses Tutorial. Also habe ich es mir durchgelesen, halbwegs verstanden und runtergeladen um einfach mal zu testen. Pustekuchen, sobald ich ein Problem beseitigt (naja ...) habe, trat ein Neues auf.

Beim ersten Versuch kam "SDL.h" nicht gefunden. Soweit auch für mich noch kein Problem: SDL.dll herunterladen, das Entwicklerpaket in die include und lib Ordner schreiben und den Pfad der #include Direktive anpassen (<SDL/SDL.h>)

Das ging auch nicht, also habe ich mir diverse Threads, FAQs und Googlefunde zu Gemüte geführt. Dabei bekam ich heraus, das ich einige Bibliotheken einbinden muss (in Projekt Optionen -> Parameter -> Linker: [TEXTFELD]). Gesagt, tun getan.
libmingw32.a
libSDLmain.a
libSDL.a


Da fällt mir auf das er "iostream.h" nicht findet. Ich habe dann ein wenig rumgespielt und Testweise ein Häkchen bei "Compiliere Datei als C++" gesetzt.
Jetzt noch die Parameter der main() dazu, <iostream> statt <iostream.h> includen und ein "using namespace std;".

Damit fängt der Sourcecode nun so an:
Code:
#include <iostream>
#include <SDL/SDL.h>

using namespace std;

int main(int argc, char *argv[])
{
	// Ab hier habe ich nichts verändert

Jetzt kommt nur noch eine Meldung F:\temp\sdl_source\Makefile.win [Build Error] [Projekt1.exe] Error 1 .
Ich habe keine Idee was ich noch machen könnte. Kann mir jemand einen Tipp oder eine URL geben, die mir hilft das Programm doch zum laufen zu bekommen?
 
Hi.
Jetzt kommt nur noch eine Meldung F:\temp\sdl_source\Makefile.win [Build Error] [Projekt1.exe] Error 1 .
Ich habe keine Idee was ich noch machen könnte. Kann mir jemand einen Tipp oder eine URL geben, die mir hilft das Programm doch zum laufen zu bekommen?
Der Meldung muss irgendein Fehler vorausgegangen sein. Steht denn dort nichts anderes davor?

Du könntest versuchen nochmal ein neues C++ Projekt anzulegen und die Einstellungen neu vorzunehmen. Ohne eine konkrete Fehlermeldung kann man da nichts sagen.

Gruß
 
Hi deepthroat,

also ich habe ein neues Projekt erstellt, den Sourcecode in die neue main.cpp kopiert und alle Einstellungen gesetzt wie im alten Projekt.
Daraufhin hat sich am Fehler nichts getan.
Ich habe dann einfach mal an allen Einstellungen geschraubt, die irgendetwas damit zu tun haben könnten. Auch nichts.

F:\Eigene Dateien\The C++ Project\test2\Makefile.win [Build Error] [Projekt1.exe] Error 1 bleibt.

Hier ist das makefile, vielleicht hilft ja:
Code:
# Project: Projekt1
# Makefile created by Dev-C++ 4.9.9.2

CPP  = g++.exe
CC   = gcc.exe
WINDRES = windres.exe
RES  = Projekt1_private.res
OBJ  = main.o $(RES)
LINKOBJ  = main.o $(RES)
LIBS =  -L"D:/Programme/Dev-Cpp/lib" libmingw32.a libSDLmain.a libSDL.a  
INCS =  -I"D:/Programme/Dev-Cpp/include" 
CXXINCS =  -I"D:/Programme/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"D:/Programme/Dev-Cpp/include/c++/3.4.2/backward"  -I"D:/Programme/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"D:/Programme/Dev-Cpp/include/c++/3.4.2"  -I"D:/Programme/Dev-Cpp/include" 
BIN  = Projekt1.exe
CXXFLAGS = $(CXXINCS)  
CFLAGS = $(INCS)  
RM = rm -f

.PHONY: all all-before all-after clean clean-custom

all: all-before Projekt1.exe all-after


clean: clean-custom
	${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
	$(CPP) $(LINKOBJ) -o "Projekt1.exe" $(LIBS)

main.o: main.cpp D:/Programme/Dev-Cpp/include/c++/3.4.2/iostream   D:/Programme/Dev-Cpp/include/SDL/SDL.h   D:/Programme/Dev-Cpp/include/SDL/SDL_main.h   D:/Programme/Dev-Cpp/include/SDL/SDL_types.h   D:/Programme/Dev-Cpp/include/SDL/begin_code.h   D:/Programme/Dev-Cpp/include/SDL/close_code.h   D:/Programme/Dev-Cpp/include/SDL/SDL_getenv.h   D:/Programme/Dev-Cpp/include/SDL/SDL_error.h   D:/Programme/Dev-Cpp/include/SDL/SDL_rwops.h   D:/Programme/Dev-Cpp/include/SDL/SDL_timer.h   D:/Programme/Dev-Cpp/include/SDL/SDL_audio.h   D:/Programme/Dev-Cpp/include/SDL/SDL_byteorder.h   D:/Programme/Dev-Cpp/include/SDL/SDL_cdrom.h   D:/Programme/Dev-Cpp/include/SDL/SDL_joystick.h   D:/Programme/Dev-Cpp/include/SDL/SDL_events.h   D:/Programme/Dev-Cpp/include/SDL/SDL_active.h   D:/Programme/Dev-Cpp/include/SDL/SDL_keyboard.h   D:/Programme/Dev-Cpp/include/SDL/SDL_keysym.h   D:/Programme/Dev-Cpp/include/SDL/SDL_mouse.h   D:/Programme/Dev-Cpp/include/SDL/SDL_video.h   D:/Programme/Dev-Cpp/include/SDL/SDL_mutex.h   D:/Programme/Dev-Cpp/include/SDL/SDL_quit.h   D:/Programme/Dev-Cpp/include/SDL/SDL_version.h
	$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

Projekt1_private.res: Projekt1_private.rc 
	$(WINDRES) -i Projekt1_private.rc --input-format=rc -o Projekt1_private.res -O coff


Hast du oder jemand anderes den Code aus dem Tutorial schonmal zum Laufen gebracht?
 
Zuletzt bearbeitet:
Hi.

Das Makefile sieht eigentlich OK aus.

Du kannst ja mal make auf der Kommandozeile aufrufen und posten was dabei rauskommt. Dazu müssen natürlich alle Programme im Pfad sein.

Gruß
 
Make auf der Komandozeile (hoffentlich ist das richtig gemacht)

D:\Programme\Dev-Cpp\bin>make.exe -f Makefile.win
g++.exe main.o Projekt1_private.res -o "Projekt1.exe" -L"D:/Programme/Dev-Cpp/li
b" libmingw32.a libSDLmain.a libSDL.a
g++.exe: libmingw32.a: No such file or directory
g++.exe: libSDLmain.a: No such file or directory
g++.exe: libSDL.a: No such file or directory
make.exe: *** [Projekt1.exe] Error 1

D:\Programme\Dev-Cpp\bin>make.exe -d -f Makefile.win > debug.txt
g++.exe: libmingw32.a: No such file or directory
g++.exe: libSDLmain.a: No such file or directory
g++.exe: libSDL.a: No such file or directory
make.exe: *** [Projekt1.exe] Error 1

debug.txt

(Siehe auch richtiges Makefile im letzten Post)

Jetzt habe ich einfach mal alle benötigten dateien in das bin/ Verzeichnis von Dev-Cpp kopiert und jetzt gehts :eek:

So sollte es doch eigentlich nicht sein oder?

Wäre schön, wenn ich das normal compilieren könnte :)
 
Hi, ich bin's nochmal.

Es war einer meiner üblichen Schusselichkeitsfehler: Mit einem absoluten Pfad auf die drei Bibliotheken hat es auch vom Projektverzeichnis aus funktioniert.

Danke an deepthroat für die Hilfestellungen :)
 
Ich habe genau das gleiche Problem.

Es gibt da so ein Template für den DevC++ runterzuladen.
Das Template habe ich installiert und die Template-Datei angepast.
Ein neues SDL-Projekt gestartet und beim übersetzen die Fehlermeldung bekommen:

[Build Error] [SDL_Game.exe] Error 1

Die CompilerLog sieht dann so aus:

Code:
Compiler: Default compiler
Building Makefile: "D:\Netzwerk\gesamt\ugoessner\SDL_Game\Makefile.win"
Führt  make clean aus
rm -f Asteroid.o Framework.o Game.o main.o Player.o Shot.o Sprite.o Timer.o  SDL_Game.exe

g++.exe -c Asteroid.cpp -o Asteroid.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Framework.cpp -o Framework.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Game.cpp -o Game.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Player.cpp -o Player.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Shot.cpp -o Shot.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Sprite.cpp -o Sprite.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe -c Timer.cpp -o Timer.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"  -I"D:/Netzwerk/gesamt/ugoessner/SDL128"   

g++.exe Asteroid.o Framework.o Game.o main.o Player.o Shot.o Sprite.o Timer.o  -o "SDL_Game.exe" -L"C:/Dev-Cpp/lib" -L"D:/Netzwerk/gesamt/ugoessner/SDL128" ../SDL128/SDL.lib ../SDL128/SDLmain.lib `sdl-config --prefix=D:/Netzwerk/gesamt/ugoessner/SDL128 --cflags`  

g++.exe: `sdl-config: No such file or directory

make.exe: *** [SDL_Game.exe] Error 1

Ausführung beendet
 
Hi uhuwe,

Hast du dir die letzte Zeile des Logs genauer angesehen? (also g++.exe: `sdl-config: No such file or directory)
Soll dieses "`" vor dem Ordnernamen stehen?

Ansonsten kannst du es auch mit absoluten Pfaden versuchen.

Gruß

_Stefan
 
Ich habe doch schon absolute Pfade verwendet.
Oder gibt es da noch eine andere Möglichkeit?
 
Zuletzt bearbeitet:
Dann solltest du kontrollieren, ob die Datei wirklich unter diesem Pfad existiert.

Der Fehler deutet ja auf eine nicht vorhandene Datei hin :confused:
 
Zurück