SDL_Gfx Linker Error?



  • Hallo,
    ich programmiere zur Zeit ein kleines Spiel mit C++ + SDL ... Weil SDL aber keine Grafikprimitive unterstützt habe ich erst versucht mir Linien und Kreise selber zu zeichnen was allerdings ohne Anti-Alias etwas pixelig aussah. Da ich aber ehrlich gesagt keine Ahnung habe wie ich das mit Anti-Alias machen sollte suche ich im Internet nach vorgefertigten Funktionen für sowas und finde auch gleich SDL_Gfx...
    Ich lese mir die Instruktionen zum Installieren durch und kein Befehl der dort stand funktioniert auch nur ansatzweise. Gut. Ehrlich gesagt hab ich von Installationen auch keine Ahnung und die Readmes waren nicht grade umfangreich.
    Ich habe irgendwo noch die SDL_gfx.dll gefunden , runtergeladen und in System32, lib und den Ordner in dem das Projekt war gepackt. Nach einiger Zeit hats auch funktioniert. Jetzt stell ich nur was um und kopier noch ein paar .h Dateien dazu ( Surfaces drehen und zoomen usw.) und plötzlich gibt er mir einen Linker Error ...
    die DLLs sind alle noch an ihrem Platz und ich habe auch keine .h Datei gelöscht oder so.
    Meine Linking Parameter sehen nach wie vor so aus :

    -static -lm -DGP2X
    -lmingw32 -lSDLmain -lSDL -ISDL_gfx

    Erst gingen sie, jetzt nicht mehr.
    Der Error der kommt heisst:
    [Linker error] undefined reference to \_imp\_\_aalineRGBA' [Linker error] undefined reference to_imp__filledCircleRGBA'

    Ich nutze Windows XP und Dev-Cpp ...
    Hat mir jemand eine Lösung für das Problem?



  • Projekteinstellungen unter Parameter:
    1. Compiler
    -Dmain=SDL_main

    2. Linker
    -lmingw32 -lSDLmain -lSDL -lSDL_gfx
    D:/Dev-Cpp/lib/libcomdlg32.a
    D:/Dev-Cpp/lib/libcomctl32.a

    gfx.c

    #include <SDL/SDL.h>
    #include <SDL/SDL_rotozoom.h>		// SDL_gfx Rotozoom
    #include <SDL/SDL_gfxPrimitives.h>	// SDL_gfx Primitives
    #include <SDL/SDL_framerate.h>		// SDL_gfx Framerate Manager
    
    int SDL_main(int argc, char *argv[])
    {
    	int init = SDL_Init(SDL_INIT_VIDEO);
    printf("init = %d\n",init);
    
    	atexit(SDL_Quit);
    	SDL_Surface *screen = SDL_SetVideoMode(410, 410, 32, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_SWSURFACE|SDL_ANYFORMAT);
    printf("Set 640x480 at %d bits-per-pixel mode\n", screen->format->BitsPerPixel);
    
    	char *title; title = "SCHEISSE!!!"; 	SDL_WM_SetCaption(title, NULL);
    	SDL_Rect rect[9];
    
    Uint32 g_Black = SDL_MapRGB(screen->format, 150, 150, 150);
           SDL_FillRect(screen, 0, g_Black);
    
    boxRGBA(screen, 15,  15, 195, 195, 225,0,0, 255);
    stringRGBA(screen, 20, 30, "x1=15, y1=15 | Rot", 222, 222, 222, 255);
    stringRGBA(screen, 20, 40, "x2=195, y2=195 | Rot", 222, 222, 222, 255);
    
    boxRGBA(screen, 205, 205, 395, 395, 0,225,0, 255);
    stringRGBA(screen, 210, 220, "x1=205, y1=205 | Gruen", 222, 222, 222, 255);
    stringRGBA(screen, 210, 230, "x2=395, y2=395 | Gruen", 222, 222, 222, 255);
    
    boxRGBA(screen, 15, 205, 195, 395, 0,0,225, 255);
    stringRGBA(screen, 20, 220, "x1=15, y1=205 | Blau", 222, 222, 222, 255);
    stringRGBA(screen, 20, 230, "x2=195, y2=395 | Blau", 222, 222, 222, 255);
    
    boxRGBA(screen, 205, 15, 395, 195, 225,225,225, 255);
    stringRGBA(screen, 210, 30, "x1=205, y1=15 | Weiss", 2, 2, 2, 255);
    stringRGBA(screen, 210, 40, "x2=395, y2=195 | Weiss", 2, 2, 2, 255);
    
    rectangleRGBA(screen, 10, 10, 400, 400, 225,0,0,255); SDL_Flip(screen);
    
    	bool isRunning = true;
    	while(isRunning){
    	        SDL_Delay(11);
    	// Check if user quits
    		SDL_Event event;
    		while(SDL_PollEvent(&event)){
    			switch(event.type){
    			case SDL_QUIT:
    				isRunning = false;
    				break;
    			case SDL_KEYDOWN:
    				if(event.key.keysym.sym == SDLK_ESCAPE)
    					isRunning = false;
    				break;
    			}
    		}
    
    	}
    
    	return 0;
    }
    


  • Genau dieses Problem hatte ich auch...
    Wo findet man genau die Datei SDL_gfx**.dll**? Ich hab überall gesucht und sie nirgends gefunden, denn im Download-Pack von der SDL_gfx-Seite ist sie auch nicht enthalten...



  • Hallo

    Nexus schrieb:

    Genau dieses Problem hatte ich auch...
    Wo findet man genau die Datei SDL_gfx**.dll**? Ich hab überall gesucht und sie nirgends gefunden, denn im Download-Pack von der SDL_gfx-Seite ist sie auch nicht enthalten...

    Vielleicht musst du sie selber kompilieren?

    chrische


Log in to reply