xcode und curses

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von Hugoderwolf, 17.10.2004.

  1. Hugoderwolf

    Hugoderwolf Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    0
    MacUser seit:
    07.03.2003
    Um ein Programm (C) für ein kleines Mikrocontroller-Projekt zu schreiben, will ich meine I/O-Libraries für Tasten und LC-Display auf dem iBook per curses simulieren. So kann ich das Hauptprogramm bequem am Book schreiben und testen und das dann irgendwann für den Controller zu Kompilieren.
    Daher habe ich also zu Anfang mal die Funktionen meiner LCD-Library genommen und versucht, die für Curses umzubauen. Problem: Curses läuft nicht. Der Build verläuft ohne Fehler und beim ausführen kommt dann die Meldung

    ZeroLink: unknown symbol '_stdscr'

    hugo-sys has exited due to signal 6 (SIGABRT).

    Ich gehe mal davon aus, dass die curses-lib nicht richtig gelinkt wird. Normalerweise würde ich also was entsprechendes ins Makefile schreiben, aber das gibt's bei Xcode nicht. Wo tu ich also den entsprechenden Hinweis hin?
     
  2. blutfink

    blutfink MacUser Mitglied

    Beiträge:
    37
    Zustimmungen:
    0
    MacUser seit:
    04.07.2004
    Ohne, dass ich jetzt eine direkte Lösung hätte...

    Zunächst hast du ein Linking-Problem, dir fehlt eine Bibliothek, in der das Symbol definiert ist.

    Schalte mal ZeroLink aus, dann erhältst du den Fehler nicht erst zur Laufzeit. Dann google mal nach dem Symbol stdscr und suche die Lib, in der es enthalten ist, und binde sie ein.
     
  3. Hugoderwolf

    Hugoderwolf Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    0
    MacUser seit:
    07.03.2003
    Ich hab das Gefühl die Lib ist da. Die Manpage von Curses gibt's, die curses.h ist offenbar auch existent, sonst würde es einen Fehler geben. Und das gesuchte Symbel stdscr steht auch nicht im Quellcode, er muss es also irgendwo her haben.

    Was ist denn ZeroLink und wo schalte ich das aus? Wie auch immer, wenn ich von Hand kompiliere muss ich die Option "-lncurses" angeben. Dann wird auch brav kompiliert und das Programm verursacht bei Ausführung einen "Bus Error", was sich aber IMO wahrscheinlich als Programmierfehler meinerseits herausstellen wird. Ergo: Ich muss Xcode irgendwie beibringen, diese Option -lncurses beim Build zu benutzen.
     
  4. Katana

    Katana MacUser Mitglied

    Beiträge:
    989
    Zustimmungen:
    0
    MacUser seit:
    30.08.2004
    was passiert, wenn du die anwendung im terminal startest?
     
  5. Katana

    Katana MacUser Mitglied

    Beiträge:
    989
    Zustimmungen:
    0
    MacUser seit:
    30.08.2004
  6. Hugoderwolf

    Hugoderwolf Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    0
    MacUser seit:
    07.03.2003
    Es kommt die Gleiche Meldung. Habe jetzt nochmal folgenden Quellcode von einem Tutorial kopiert um Programmierfehler auszuschließen:

    Code:
    #include <curses.h>
    
    int main()
    {
            int c;
            initscr();   /*curses initialisieren*/
            keypad(stdscr,TRUE);
            while((c=getch()) == KEY_DOWN || c==KEY_UP || c==KEY_LEFT || c==KEY_RIGHT)
                      ;
            endwin();
            return 0;
    }
    Wenn ich das im Terminal kompiliere mit:
    gcc -o cursestest main.c -lncurses

    Dann funktioniert das Programm. Wenn ich es mit der Methode aus deinem Link in Xcode Kompiliere habe ich wieder diesen ZeroLink-Fehler. :(
     
  7. Katana

    Katana MacUser Mitglied

    Beiträge:
    989
    Zustimmungen:
    0
    MacUser seit:
    30.08.2004
  8. blutfink

    blutfink MacUser Mitglied

    Beiträge:
    37
    Zustimmungen:
    0
    MacUser seit:
    04.07.2004
    Links oben im "Groups & Files"-Panel klickst du doppelt auf dein Projekt (blaues Symbol). Dann kommt deine "Project Info". Dann wählst du den Tab "Styles". In der dann erscheinenden Liste machst du das Häkchen bei ZeroLink weg.

    Dort findet sich auch ein Eintrag namens "Other Linker Flags". Dort trägst du -lncurses ein.
     
  9. Hugoderwolf

    Hugoderwolf Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    0
    MacUser seit:
    07.03.2003
    Ah supi danke! Das funzt. Man kann das Proggi zwar nicht von Xcode aus per Build&Run ausführen (Error opening terminal: unknown.) aber vom Terminal aus geht's.
     
Die Seite wird geladen...

Diese Seite empfehlen