SDL - Bezeichner werden nicht gefunden
-
Hallo,
Ich benutze MS Visual 2008 Express und bekomme beim kompilieren immer folgende Fehler:
------ Erstellen gestartet: Projekt: Mein SDL Projekt, Konfiguration: Debug Win32 ------
Kompilieren...
main.cpp
c:\dokumente und einstellungen\***\eigene dateien\visual studio 2008\projects\mein sdl projekt\mein sdl projekt\main.cpp(53) : error C3861: "load_image": Bezeichner wurde nicht gefunden.c:\dokumente und einstellungen\***\eigene dateien\visual studio 2008\projects\mein sdl projekt\mein sdl projekt\main.cpp(80) : error C3861: "apply_surface": Bezeichner wurde nicht gefunden.
c:\dokumente und einstellungen\***\eigene dateien\visual studio 2008\projects\mein sdl projekt\mein sdl projekt\main.cpp(81) : error C3861: "apply_surface": Bezeichner wurde nicht gefunden.
c:\dokumente und einstellungen\***\eigene dateien\visual studio 2008\projects\mein sdl projekt\mein sdl projekt\main.cpp(90) : error C2601: 'clean_up': Lokale Funktionsdefinitionen sind unzulässig
c:\dokumente und einstellungen\***\eigene dateien\visual studio2008\projects\mein sdl projekt\mein sdl projekt\main.cpp(69):
Diese Zeile enthält eine '{', die keine Entsprechung hatDas Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\***\Eigene Dateien\Visual Studio 2008\Projects\Mein SDL Projekt\Mein SDL Projekt\Debug\BuildLog.htm" gespeichert.
Mein SDL Projekt - 4 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========//The headers #include "SDL_.h" #include "SDL_image.h" #include <string> //Screen attributes const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; //The surfaces SDL_Surface *image = NULL; SDL_Surface *screen = NULL; SDL_Surface *load_image( std::string filename ) { //The image that's loaded SDL_Surface* loadedImage = NULL; //The optimized image that will be used SDL_Surface* optimizedImage = NULL; //Load the image using SDL_image loadedImage = IMG_Load( filename.c_str() ); //If the image loaded if( loadedImage != NULL ) { //Create an optimized image optimizedImage = SDL_DisplayFormat( loadedImage ); //Free the old image SDL_FreeSurface( loadedImage ); } //Return the optimized image return optimizedImage; } void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ) { //Rectangle to hold the offsets SDL_Rect offset; //Get offsets offset.x = x; offset.y = y; //Blit the surface SDL_BlitSurface( source, NULL, destination, &offset ); } bool init() { //Initialize all SDL subsystems if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return false; } //Set up the screen screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE ); //If there was an error in setting up the screen if( screen == NULL ) { return false; } //Set the window caption SDL_WM_SetCaption( "PNG test", NULL ); //If everything initialized fine return true; } void clean_up() { //Free the surface SDL_FreeSurface( image ); //Quit SDL SDL_Quit(); } int main( int argc, char* args[] ) { //Initialize if( init() == false ) { return 1; } //Load the image image = load_image( "look.png" ); //If there was a problem in loading the image if( image == NULL ) { return 1; } //Apply the surface to the screen apply_surface( 0, 0, image, screen ); //Update the screen if( SDL_Flip( screen ) == -1 ) { return 1; } //Wait 2 seconds SDL_Delay( 2000 ); //Free the surface and quit SDL return 0; }
Der Quelltext ist von einem Lazy Foo Tutorial kopiert (http://www.lazyfoo.net/SDL_tutorials/lesson03/index.php) ... weiß Jemand wie ich die Fehler beheben kann?
Die Datei "look.png" befindet sich im Projektordner und die SDL ist auch richtig konfiguriert (denke ich).
-
Ist das auch der originale Sourcecode? Ich sehe in Zeile 53 nämlich kein "load_image"-Aufruf.
-
Kóyaánasqatsi schrieb:
Ist das auch der originale Sourcecode? Ich sehe in Zeile 53 nämlich kein "load_image"-Aufruf.
Die Zeilennummern können doch hier ganz andere sein als im Editor.
@_Kay_: Er sagt dir doch den Fehler. Der Compiler findet einen Bezeichner nicht. Also entweder brauchst du eine Forward Declartion oder (meistens) einfach den Header einbinden. Ich bezweifle, dass der richtige Header "SDL_.h" heißt.
-
Wie meinst du das genau? Was für einen Header soll ich denn sonst einbinden? Ganz genau so stand es in dem Tutorial, ich weiß nicht was ich sonst einbinden soll.
Ach und die DLL´s, müssen die in dem Ordner sein wo das Projekt ist oder im SDL Ordner?
-
Kay schrieb:
Wie meinst du das genau? Was für einen Header soll ich denn sonst einbinden?
Den richtigen.
Kay schrieb:
Ach und die DLL´s, müssen die in dem Ordner sein wo das Projekt ist oder im SDL Ordner?
http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx
-
Problem gelöst - lag wie du gesagt hast am falschen Include-Befehl, er musste nämlich "SDL.h" heißen und nicht "SDL_.h".
Gruß,
Kay