Anzeige:
Ergebnis 1 bis 8 von 8

Thema: SDL: undefined reference

  1. #1
    mcleod
    Gast

    SDL: undefined reference

    Hallo Foum,

    dies ist mein erstes Posting hier und ich hoffe ihr könnt mir etwas helfen.
    Erstmal vorweg: Ich bin recht unerfahren in Linux (ein weiterer Win-Flüchtling) und kenne mich mit C-Programmierung auch nicht gut aus, bzw. bin gerade dabei seit vielen Jahren wieder damit anzufangen.
    Ich benutze Mandrake 9.1 und mache meine ersten Gehversuche mit KDevelop. Außerdem schnuppere ich gerade etwas in SDL hinein.
    Ich wollte folgendes Progrämmchen (zum Lernen und Üben) compilieren, doch dabei schon eine erste Fehlermeldung.. Ich habe natürlich danach schon gesucht und die Fehlermeldung auch schon öfters gefunden, aber nirgendwo war eine Lösung für mich dabei.
    Ich denke, ich habe alle Pakete die mit SDL zu tun haben installiert.
    Hier das Programm:
    Code:
    #ifdef HAVE_CONFIG_H
    #include <config.h>
    #endif
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <SDL/SDL.h>
    
    int main(int argc, char *argv[])
    {
      SDL_Event ereignis;
       
        while ( SDL_PollEvent(&ereignis) )
        {
            switch (ereignis.type)
            {
                case SDL_MOUSEMOTION:
                    printf("Die Maus wurde um %d,%d Pixel nach (%d,%d) bewegt.\n",
                           ereignis.motion.xrel, ereignis.motion.yrel,
                           ereignis.motion.x, ereignis.motion.y);
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    printf("Die Maustaste Nummer %d wurde bei (%d,%d) gedrückt.\n",
                           ereignis.button.button, ereignis.button.x, ereignis.button.y);
                    break;
                case SDL_QUIT:
                    exit(0);
            }
        }
    
      return EXIT_SUCCESS;
    }
    Die genaue Fehlermeldung ist:
    Code:
    gmake all-recursive 
    gmake[1]: Entering directory `/home/leod/Programme/SDL/test/event_watch' 
    Making all in event_watch 
    gmake[2]: Entering directory `/home/leod/Programme/SDL/test/event_watch/event_watch' 
    gcc -DHAVE_CONFIG_H -I. -I. -I.. -O2 -O0 -g3 -Wall -c main.c 
    /bin/sh ../libtool --mode=link gcc -O2 -O0 -g3 -Wall -o event_watch main.o 
    gcc -O2 -O0 -g3 -Wall -o event_watch main.o 
    main.o(.text+0x18): In function `main': 
    /home/leod/Programme/SDL/test/event_watch/event_watch/main.c:30: undefined reference to `SDL_PollEvent' 
    collect2: ld returned 1 exit status 
    gmake[2]: Leaving directory `/home/leod/Programme/SDL/test/event_watch/event_watch' 
    gmake[2]: *** [event_watch] Fehler 1 
    gmake[1]: *** [all-recursive] Fehler 1 
    gmake[1]: Leaving directory `/home/leod/Programme/SDL/test/event_watch' 
    gmake: *** [all-recursive-am] Fehler 2 
    *** failed ***
    Hoffe auf viele Vorschläge, viele Grüße

    leod

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    In KDevelop muss es irgendwo in deinen Projekteinstellungen ein Feld Linkerflags geben. Da folgendes reinschreiben:
    `sdl-config --libs`

  3. #3
    mcleod
    Gast
    Im Menü Projects/Options unter Compiler-Options gibt es eine Karteikarte 'Linker Flags'. Dort habe ich in das Feld Additional Flags das eingetragen:
    sdl-config --libs
    Nach OK kommen diese Compiler-Meldungen:
    Code:
    Running configure in source directory 
    loading cache ./config.cache 
    checking host system type... i386-pc-linux-gnu 
    checking target system type... i386-pc-linux-gnu 
    checking build system type... i386-pc-linux-gnu 
    checking for a BSD compatible install... (cached) /usr//bin/install -c 
    checking for -p flag to install... yes 
    checking whether build environment is sane... yes 
    checking whether make sets ${MAKE}... (cached) yes 
    checking for working aclocal-1.4... found 
    checking for working autoconf... found 
    checking for working automake-1.4... found 
    checking for working autoheader... found 
    checking for working makeinfo... found 
    checking for gcc... (cached) gcc 
    checking whether the C compiler (gcc -O0 -g3 -Wall sdl-config --libs) works... no 
    configure: error: installation or configuration problem: C compiler cannot create executables. 
    *** failed ***
    Und beim Compilieren kommt immernoch der gleiche Fehler. Da muss wohl doch noch etwas anderes falsch eingestellt sein bei mir oder warum kann der Compiler keine executables machen?
    Aber Hello World konnte ich eben aber auch compilieren...

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Bitte auch sein Beispielvorgabe so annehmen wie er es geschrieben hat.
    An sonsten in der Console ausführen und das ergebnis in KDevelop einfügen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Ich hab noch Hochkommata drum "`": Shift und die Taste neben Backspace. sdl-config ist ein Befehl, kannst du mal in der Konsole ausführen, da sollten dann die entsprechenden Flags erscheinen. Mit den Hochkommata sage ich KDevelop, es möge den Befehl ausführen und stattdessen den Output des Befehls einfügen.

  6. #6
    mcleod
    Gast
    Vielen Dank, compilieren klappt jetzt

    Doch habe ich wohl mit den SDL-Funktionen Probleme. Keiner der Beispiele auf der http://www.libsdl.org/ Seite funktioniert bei mir (zB die Funktion oben).
    Alle lassen sich in einbauen und compilieren aber wenn ich in KDevelop den Run-Befehl ausführe, erscheint nur ein leeres Konsolenfenster, das ich dann nur noch mit Return schließen kann. Kein Text, keine Eingabe funktoniert. Auch die fertige Version startet nicht, wenn ich sie auf der Konsole starte - dort erscheint dann gar nichts.

    Wenn ihr Lust habt, gebt mir doch mal einen Tipp, woran das liegen könnte. Und außerdem suche ich noch eine gute Anleitung für SDL-Anfänger im Netz. Hat jemand einen Tipp?

    Schönen Gruß,
    leod

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Was passiert genau, wenn du ein SDL-Programm startest? In der Konsole etwa: Erscheint da einfach nichts, das Programm läuft aber weiter, oder beendet es sich sofort? Oder erscheint ein leeres schwarzes Fenster(gutes Zeichen)?

  8. #8
    mcleod
    Gast
    Wenn ich im Compiler auf Run klicke, erscheint ein bash-Fenster in dem nur Press Enter to continue steht.
    Und wenn ich meine fertig compilierten Mini-Programme in der Konsole starte, erscheint gar nichts - auch kein neues Bash-Fenster. Einfach nur die nächste Eingabeaufforderung, sonst auch keine Meldung.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •