1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

getch() mit Xcode

Dieses Thema im Forum "OS X-Developer" wurde erstellt von hehemande, 29.04.06.

  1. hehemande

    hehemande Gast

    Hallo zusammen,

    Ich brauche dringend eure Hilfe!
    Ich habe nun seit gut 2 Monaten mein Ibook, und bin eigentlich super zu frieden.

    Nur schreibe ich in der Schule C++ Programme mir Xcode, und benötige dringend einen Ersatz für getch(); (Zur info: Ist auf der Dose die Funktion, mit der sich ein zeichen ohne Eingabe von "Enter" einlesen lässt)

    Vielen Dank im Voraus
     
  2. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.252
    curses.h inkludieren und gegen die betreffende Library linken.
     
  3. hehemande

    hehemande Gast

    Hi,

    Erst einmal vielen Dank für Deine Antwort!
    Nur was heißt
    ?

    Vielen Dank
     
  4. stoebe

    stoebe Uelzener Rambour

    Dabei seit:
    23.12.05
    Beiträge:
    371
    Naja, du includest "curses.h" mit
    Code:
    #include <curses.h>
    und linkst beispielsweise mit
    Code:
    int main()
    {
       char Taste;
       Taste = 'getch()';
       if(Taste) cout << Taste << " gedrueckt...";
    }
    gegen die entsprechende Library -auch, wenn der o.g. Code nicht funzt...


    Oder versteh ich da was falsch?
     
    #4 stoebe, 29.04.06
    Zuletzt bearbeitet: 29.04.06
  5. hehemande

    hehemande Gast

    hmm,

    leider erhalte ich die folgende Fehlermeldung beim Ausführen des Programms:
    Gruß
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Du musst auch wirklich gegen die curses-Bibliothek linken (nicht nur die Deklarationen inkludieren)...
    Auf der Konsole z.B. mit
    Code:
    g++ testprogramm.cpp -o testprogramm [B]-lcurses[/B]
     
  7. hehemande

    hehemande Gast

    Also ich habe das jetzt so versucht:

    Kommt trotzdem noch der gleiche Fehler :(

    Was mache ich falsch? Muss ich Xcode vorher schließen?
     
  8. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Komisch. Hier mein Hauptprogramm, zum Ausschneiden:
    Code:
    #include <curses.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      char taste;
      taste = getch();
      if (taste) cout << taste << " gedrueckt...";
    }
    
    Das heißt bei mir cursestest.cpp. Im Terminal dann einfach (wie oben)
    Code:
    g++ cursestest.cpp -o cursestest -lcurses
    eingeben. Und genau das geht bei Dir nicht? Die Fehlermeldung kommt definitiv vom Linker.
     
  9. hehemande

    hehemande Gast

    Mal eine Frage: Wie erstellst Du denn die c++ Projekte? Ich mache das über C++ Tool, und dann nennt Xcode die Datei automatisch main.cpp.

    Vielleicht liegt mein Fehler im Projekttyp?

    Danke
     
  10. marius

    marius Gast

    Gehen denn normale *.cpp dateien, ohne jegliche Bibliotheken?
     
  11. hehemande

    hehemande Gast

    Dumme Frage, wie compiliere ich diese?
     
  12. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Zu meiner Schande muss ich gestehen, dass ich das nur im Terminal probiert habe. Wo man in Xcode einstellt, die libcurses dazuzulinken, weiß ich grad auch nicht :eek:
     
  13. marius

    marius Gast

    Entweder schnall ichs nicht, oder wir reden aneinander vorbei...
    Hast du schonmal überhaupt etwas Kompiliert?
    Sowas z.B.:

    Code:
    #include <iostream>
    
    int main()
    {
     std::cout<< "Das ist ganz toll!";
     return 0;
    }
    und hast du das mit..

    Code:
    g++ dateiname.cpp
    Kompiliert?

    Sry, aber ich komm nicht ganz dahinter... :innocent:
     
  14. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Es geht ihm darum, das in Xcode zu machen. Ich hab jetzt mal sein Problem simuliert, komme auf das gleiche. In Xcode neues Projekt (Command Line Utility -> C++ Tool) erstellt, gleichen Code wie oben rein, ergibt gleichen Linkerfehler. Es liegt glaube ich daran, dass diese ZeroLink-Funktion von Xcode nicht erkennt, dass die libcurses dazu zu linken ist. So weit wie ich verstehe, wird da normalerweise aus den includeten Headers abgeleitet, welche Bibliotheken benötigt werden. Nur bei libcurses klappt's nicht. Da muss man anscheinend in der Build-Konfiguration manuell diese Bibliothek hinzufügen. Oder?
     
  15. marius

    marius Gast

    aha, nun ehm... dann vergiss das was ich gesagt habe. :)
     
  16. hehemande

    hehemande Gast

    Also ich habe jetzt mal den Beispielcode mit Textedit geschrieben, abgespeichert, verlinkt und versucht über das Terminal zu compilieren.

    Erhalte trotzdem Fehler:
    Viele Grüße
     
  17. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Das sieht aber irgendwie wirr aus. Es muss ein Befehl sein. Und kein Leerzeichen zwischen -l und curses.

    EDIT: So z.B. bei mir
    Code:
    ne6e0:~/c++/cursestest thorsten$ g++ cursestest.cpp -o cursestest -lcurses
    ne6e0:~/c++/cursestest thorsten$ 
    
     
  18. hehemande

    hehemande Gast

    Komisch, jetzt sagt er beim ausführen
    Ich verzweifel langsam...
     
  19. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Ein falsch gelinktes Programm sollte man nicht ausführen. Hast Du Dich denn mal um den Linkerfehler gekümmert?
     
  20. hehemande

    hehemande Gast

    In wie fern gekümmert? Ich dachte, das wäre mit obrigen Befehlen behoben, und beim Compilieren gibts ja auch keine Probleme mehr o_O
     

Diese Seite empfehlen