Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Richtig Compilieren, ... aber wie

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.07.2003
    Ort
    716**
    Beiträge
    5

    Richtig Compilieren, ... aber wie

    Hi,

    als NeuLinuxer hat es mich gleich wieder in den Fingern gejuckt und ich dachte mir lern was neues.
    Also hab ich mir das Buch KDE- und QT-Programmierung von Burkhard Lehner geschnappt und....bin am ersten Beispiel gescheitert, genauer gesagt am Compilieren.

    Das Beispiel:
    // Das erste Programm
    // KDE- und QT - Programmierung
    // Addison-Wesley Germany
    #include <qapplication.h>
    #include <qpushbutton.h>

    int main (int argc, char **argv)
    {
    QApplication app (argc, argv);
    QPushButton *b = new QPushButton ("Beenden");
    QObject::connect (b, SIGNAL (clicked()),
    &app, SLOT (quit()));
    b->show();
    int result = app.exec();
    delete b;
    return result;
    }


    Das Compilieren:

    gcc Documents/Textdocuments/erstes.cpp -o erstes -I$QTDIR/include -lqt
    Documents/Textdocuments/erstes.cpp:4:26: qapplication.h: Datei oder Verzeichnis nicht gefunden
    Documents/Textdocuments/erstes.cpp:5:25: qpushbutton.h: Datei oder Verzeichnis nicht gefunden
    Documents/Textdocuments/erstes.cpp: In function `int main(int, char**)':
    Documents/Textdocuments/erstes.cpp:9: error: `QApplication' undeclared (first
    use this function)
    Documents/Textdocuments/erstes.cpp:9: error: (Each undeclared identifier is
    reported only once for each function it appears in.)
    Documents/Textdocuments/erstes.cpp:9: error: parse error before `(' token
    Documents/Textdocuments/erstes.cpp:10: error: `QPushButton' undeclared (first
    use this function)
    Documents/Textdocuments/erstes.cpp:10: error: `b' undeclared (first use this
    function)
    Documents/Textdocuments/erstes.cpp:10: error: parse error before `(' token
    Documents/Textdocuments/erstes.cpp:11: error: `QObject' undeclared (first use
    this function)
    Documents/Textdocuments/erstes.cpp:14: error: `app' undeclared (first use this
    function)

    Scheint wohl ein Problem mit ner Bibliothek zu sein ????
    Kann jemand nem QT-Newbie auf einfache art und weise das Problem und die Lösung näher bringen damit es bei mir mal schnackelt.

    Herzlichsten Danke schon mal

    MAC

  2. #2
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hallo,

    ja, du hast recht, dem compiler fehlt der include und der libpath zu Qt.

    die richtige compileanweisung waere:
    Code:
    g++ main.cpp -o example -I/$QTDIR/include -L/$QTDIR/lib -lqt-mt
    (es gibt auch faelle ohne -mt soweit ich weiss, das ist aber glaub ich in aelteren non-multithreaded versionen ).

    was $QTDIR ist musst du herausfinden.
    bei mir( mandrake 9.1 ) ist es /usr/lib/qt3. von diesem ordner aus gibt es dann ein lib und ein include sowie weitere( z.b. ./bin oder ./examples ) unterverzeichnisse.

    am besten machst du $QTDIR persistent und schreibst es in deine ~/.bashrc.

    z.b.

    export QTDIR=/usr/lib/qt3
    export PATH=$PATH:$QTDIR/bin

    gruss,

    tuxipuxi.

    p.s: kde pfade wird dir anda_skoa drueber berichten.

    update:

    die gcc executable ist fuer C Programme, fuer C++ Programme benutzt man den g++.

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.07.2003
    Ort
    716**
    Beiträge
    5
    Hi,

    also jetzt hab ich ein bischen umgebaut, jetzt ist die Fehlermeldung doch bedeutent kürzer geworden, aber irgendwie krieg ich das Gefühl nicht los das ich irgendwas immer noch nicht gecheckt hab...

    g++ SourceCode/erstes.cpp -o erstes - /usr/lib/qt3 -L/usr/lib/qt3/lib -lqt -mt
    cc1plus: error: invalid option `t'
    g++: -E required when input is from standard input


    Für die bisherige Hilfe mal auf jeden Fall schon mal ein großes DANKE.

    MAC

  4. #4
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hi,

    hast du einen copy&paste error oder hast du wirklich
    Code:
    g++ SourceCode/erstes.cpp -o erstes - /usr/lib/qt3 -L/usr/lib/qt3/lib -lqt -mt
    probiert?

    wenn ja, musst du nach dem "erstes" und dem "-" ein "I" setzen.

    also:

    Code:
    g++ SourceCode/erstes.cpp -o erstes -I/usr/lib/qt3/include -L/usr/lib/qt3/lib -lqt-mt
    gruss,

    tuxipuxi.

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.07.2003
    Ort
    716**
    Beiträge
    5
    Hi,

    weniger Kopierfehler, mehr meine Schuld weils ums verecken nicht ging und ich dann halt "rumgespielt" hab.

    Wenn ich jetzt deinen Vorschlag übernehme hab ich nur noch die geschichte mit dem `t´, was könnte das sein?

    g++ SourceCode/erstes.cpp -o erstes -I/usr/lib/qt3/include -L/usr/lib/qt3/lib -lqt -mt
    cc1plus: error: invalid option `t'

    Grüße

    MAC

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich glaube du hast immer noch ein Leezeichen in -lqt-mt

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.07.2003
    Ort
    716**
    Beiträge
    5
    Hi,

    ja das wirds wohl gewesen sein. Es scheint mir hier aber eher ein Problem in der Tasache zu bestehen das, das Buch das ich nutze aus QT2 Zeiten stammt weil irgendwie funktioniert es net. Oder was meint ihr?
    Code:
    g++ SourceCode/erstes.cpp -o erstes -I/usr/lib/qt3/include -L/usr/lib/qt3/lib -lqt-mt
    SourceCode/erstes.cpp: In function `int main(int, char**)':
    SourceCode/erstes.cpp:10: error: no matching function for call to `QPushButton
       ::QPushButton(const char[8])'
    /usr/lib/qt3/include/qpushbutton.h:134: error: candidates are:
       QPushButton::QPushButton(const QPushButton&)
    /usr/lib/qt3/include/qpushbutton.h:66: error:
       QPushButton::QPushButton(const QIconSet&, const QString&, QWidget*, const
       char* = 0)
    /usr/lib/qt3/include/qpushbutton.h:65: error:
       QPushButton::QPushButton(const QString&, QWidget*, const char* = 0)
    /usr/lib/qt3/include/qpushbutton.h:64: error:
       QPushButton::QPushButton(QWidget*, const char* = 0)
    Gibts irgendwelche (aktuelle) Bücher die gut für den Einstieg sind?

    Grüße

    MAC

  8. #8
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hi,

    ein relativ aktuelles( 2.3.2 ) buch ist das qt buch von suse press.
    du solltest es allerdings noch ein wenig weiter mit deinem buch probieren , vielleicht hat er in diesem beispiel geschlampt.

    das problem ist, dass der pushbutton ein parent braucht, was du ihm aber nicht gibst. da dein button das einzige widget in deinem programm ist soll es zum parent widget werden.

    also aenderst du die zeile:
    Code:
    QPushButton *b = new QPushButton ("Beenden");
    in:
    Code:
    QPushButton *b = new QPushButton ("Beenden", 0);
    jetzt ist der pushbutton das mainwidget, ist also nicht in einem anderen widget ein child.
    ( stell dir parent und child an dieser stelle einfach so vor:
    die lego platten sind der parent wo alle legosteine( die childs ) raufgesteckt werden. in deinem beispiel ist der pushbutton einfach ein unabhaengigger stein ).

    gruss,

    tuxipuxi.

  9. #9
    Registrierter Benutzer
    Registriert seit
    11.07.2003
    Ort
    716**
    Beiträge
    5
    Hi,

    sogesehen logisch und es funzt, Danke.

    Weißt du unter Windows hab ich aus einer gewissen Bequemlichkeit heraus immer mit VB geschafft. Da sind glaube ich meine Fähigkeiten zur Abstraktion etwas verkümmert. Ich hab mir in letzter Zeit wieder verstärkt C Codes angeschaut und festgestellt "mmhhh das konntest du schon mal besser".


    Grüße

    MAC

Lesezeichen

Berechtigungen

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