Seite 1 von 1

Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 10:40 am
von SargTeX
Hey.

Ich bin total neu bei C++ und schaue mir grade das Tutorial an. Komme aus PHP/Java/JavaScript/C#, der Richtung ;).

Nun habe ich folgendes Problem: Bei der Wascana-IDE steht die SDL.h unter den "Includes". Folgender Aufruf gibt jedoch den Fehler aus:

Code: Alles auswählen

#include "SDL.h"
Woran liegt das? Muss ich angeben, dass bestimmte Dateien mit beim Build berücksichtigt werden? Oder wie bei Linux angeben, dass die Datei bei der Ausführung mit verwendet wird?
Anbei noch ein Screenshot.

Liebe Grüße & danke im voraus,
SargTeX

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 10:51 am
von Xin
Moin SargTeX?

Ist das eine LaTex-Distribution für Todesanzeigen oder wie kommt der Name zustande? ;-)

Hast Du die SDL.h auf Deiner Festplatte bereits gefunden?
Die Frage ist also, hast Du die SDL-Includes installiert und wenn ja wo und anschließend, ob der Pfad in Deiner Include-Pfad-Liste ist.

Wascana habe ich momentan nicht so wirklich auf dem Schirm, das war Eclipse für C++, wenn ich mich recht entsinne!?
Aber auch da wird es irgendwo Projekteinstellungen geben, wo Du eine Liste "Zusätzliche Include-Verzeichnisse" (oder ähnliches) hast, bei der der Pfad zur SDL.h enthalten sein muss.

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 11:15 am
von SargTeX
Hey Xin.

Ne, der Name hat nichts mit Särgen zu tun :D sprech es englisch aus :)
Das Wascana ist ja ein angepasstes Eclipse, wenn ich es richtig verstanden habe? Hab es mir nach dem Link ausm Tutorial heruntergeladen.

Die Datei liegt unter MinGW/includes/SDL, und der Ordner ist auch unter "Includes" drin. Kann es sein, dass ich nach der MinGW Installation meinen PC neu starten muss? Oo

Liebe Grüße,
SargTeX

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 11:21 am
von nufan
Tag :)
SargTeX hat geschrieben:Die Datei liegt unter MinGW/includes/SDL, und der Ordner ist auch unter "Includes" drin.
Deine Datei "SDL.h" liegt also im "SDL"-Unterverzeichnis, das musst du im Programm auch angeben. Also:

Code: Alles auswählen

#include <SDL/SDL.h>
bzw.

Code: Alles auswählen

#include "SDL/SDL.h"
Letzteres sucht zuerst im aktuellen Verzeichnis, dann im include-Verzeichnis. Die erste Methode sucht sofort im include-Verzeichnis.
SargTeX hat geschrieben:Kann es sein, dass ich nach der MinGW Installation meinen PC neu starten muss? Oo
Nein, das ist normal nicht notwendig.

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 11:31 am
von Xin
SargTeX hat geschrieben:Hey Xin.

Ne, der Name hat nichts mit Särgen zu tun :D sprech es englisch aus :)
Hmm... klingt im Prinzip genauso...!?
SargTeX hat geschrieben:Das Wascana ist ja ein angepasstes Eclipse, wenn ich es richtig verstanden habe? Hab es mir nach dem Link ausm Tutorial heruntergeladen.
Ah... okay, das ist Kerlis Bereich. :-)
Aber Wascana könnte ich mir beizeiten auch mal wieder ansehen.
SargTeX hat geschrieben:Die Datei liegt unter MinGW/includes/SDL, und der Ordner ist auch unter "Includes" drin. Kann es sein, dass ich nach der MinGW Installation meinen PC neu starten muss? Oo
Das kann bei Windows immer sein. ;-)

Sollte hier aber nicht das Problem ausmachen.
Ich weiß jetzt nicht, ob linksseitig die Includes dem Compiler bekannt sind - wie gesagt, ich kenne Wascana nicht wirklich, dafür müsste ich das heute Abend mal ausprobieren.
Üblicherweise gibt man dem Compiler Include-Verzeichnisse mit, hier sind aber einzelne Dateien aufgeführt, das wundert mich etwas.

Der Compiler kennt die Datei ja offensichtlich nicht, also fehlt das Includeverzeichnis, in dem SDL.h liegt.
Bitte schau in den Projekteinstellungen nach, wo die zusätzlichen Include-Verzeichnisse angegeben sind und mach davon mal 'nen Screenshot.

@dani93: Nicht so schnell:
http://www.proggen.org/doku.php?id=sdl:hellosdl

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 11:42 am
von SargTeX
Oh, danke :) Das wird nun nicht mehr als Fehler angezeigt, dafür bekomme ich nun einen neuen:
c:/wascana/mingw/bin/../lib/gcc/mingw32/4.4.1-dw2/../../../libmingw32.a(main.o):main.c:(.text+0xd2): undefined reference to `WinMain@16'
Gemäß Google bedeutet das, dass ich versuche, eine grafische Windows-Applikation anzulegen und deswegen die "WinMain"-Funktion erwartet wird. Ich möchte das ganze jedoch zunächst unabhängig von Windows machen, inwiefern sich das realisieren lässt, merke ich dann später. Da wurde vorgeschlagen, beim Compiler den Flag zu entfernen:
-mwindows
Wo lässt sich das unter Eclipse/Wanasca tun? Unter Project => Properties => C/C++ Build => Discovery Options ist keine solche Flag gesetzt.

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Di Jun 05, 2012 12:59 pm
von canlot
Hey ich würde dir das Framework SFML empfehlen, ich habe auch alles durchprobiert von SDL, Allegro und jetzt SFML. SFML ist meiner Meinung leichter weil es objektorientiert und leicht zu erlernen ist. SDL empfinde ich als das schlechteste von allen es ist veraltet und unterstützt die neue Hardware nicht richtig.

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Mi Jun 06, 2012 4:58 am
von Fisherman
Unter Eclipse musst du noch die Linker Flags hinzufügen -lSDL
Dann sollte es funktionieren ;)

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Mi Jun 06, 2012 8:45 am
von Xin
Fisherman hat geschrieben:Unter Eclipse musst du noch die Linker Flags hinzufügen -lSDL
Dann sollte es funktionieren ;)
Tach Fisherman,

-lSDL ist richtig und wichtig, aber ich ging davon aus, dass er das bereits hat, denn es wird keine SDL-Funktion vermisst, sondern die WinMain().

WinMain heißt ja eigentlich, dass ein Windows-Projekt und kein Konsolenprojekt entsteht...
@SargTex: Sicher, dass das ein Konsolenprojekt ist!?

Re: Include-Problem (Datei nicht gefunden)

Verfasst: Mi Jun 06, 2012 9:40 am
von nufan
Ich hatte dieses Problem auch schon mal. Bin mir ziemlich sicher, dass es am Linker und nicht am Projekt selbst lag. Versuch mal folgende Bibliotheken zu linken (in dieser Reihenfolge):

Code: Alles auswählen

-lmingw32 -lSDLmain -lSDL