IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Problème à la compilation


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Problème à la compilation
    salut tlm, j'ai mis ce probleme dans la section C++. j'espere bien faire.
    j'apprends a me servir de qt. je lance qtdoc, et j'ai une superbe doc en anglais. je regare le tuto 1 ya un exemple tout con.
    je le recopie betement. je lance les deux commandes comme indiqué : cad
    qmake -project
    qmake
    ça me genere un beau makefile. que je lance, et hop des erreurs a la compilation !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #include <qapplication.h>
    #include <qpushbutton.h>
    #include <qfont.h>
     
     
    int main( int argc, char **argv )
    {
        QApplication a( argc, argv );
     
        QPushButton quit( "Quit", 0 );
        quit.resize( 75, 30 );
        quit.setFont( QFont( "Times", 18, QFont::Bold ) );
     
        QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
     
        a.setMainWidget( &quit );
        quit.show();
        return a.exec();
    }
    qq peut essayer chez lui svp.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Quelles sont ces erreurs ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    g++  -o qt main.o    -L/usr/X11R6/lib -lXext -lX11 -lm
    main.o(.text+0x33): In function `main':
    : undefined reference to `QApplication::QApplication(int&, char**)'
    main.o(.text+0x44): In function `main':
    : undefined reference to `QString::QString(char const*)'
    main.o(.text+0x62): In function `main':
    : undefined reference to `QPushButton::QPushButton(QString const&, QWidget*, char const*)'
    main.o(.text+0x77): In function `main':
    : undefined reference to `QString::shared_null'
    main.o(.text+0x81): In function `main':
    : undefined reference to `QStringData::deleteSelf()'
    main.o(.text+0xa6): In function `main':
    : undefined reference to `QPushButton::resize(int, int)'
    main.o(.text+0xb7): In function `main':
    : undefined reference to `QString::QString(char const*)'
    main.o(.text+0xe1): In function `main':
    : undefined reference to `QFont::QFont(QString const&, int, int, bool)'
    main.o(.text+0xf3): In function `main':
    : undefined reference to `QWidget::setFont(QFont const&)'
    main.o(.text+0x101): In function `main':
    : undefined reference to `QFont::~QFont()'
    main.o(.text+0x116): In function `main':
    : undefined reference to `QString::shared_null'
    main.o(.text+0x120): In function `main':
    : undefined reference to `QStringData::deleteSelf()'
    main.o(.text+0x13e): In function `main':
    : undefined reference to `QObject::connect(QObject const*, char const*, QObject const*, char const*)'
    main.o(.text+0x14a): In function `main':
    : undefined reference to `QApplication::setMainWidget(QWidget*)'
    main.o(.text+0x152): In function `main':
    : undefined reference to `QWidget::show()'
    main.o(.text+0x15a): In function `main':
    : undefined reference to `QApplication::exec()'
    main.o(.text+0x164): In function `main':
    : undefined reference to `QPushButton::~QPushButton()'
    main.o(.text+0x16c): In function `main':
    : undefined reference to `QApplication::~QApplication()'
    main.o(.text+0x193): In function `main':
    : undefined reference to `QString::shared_null'
    main.o(.text+0x19d): In function `main':
    : undefined reference to `QStringData::deleteSelf()'
    main.o(.text+0x1a9): In function `main':
    : undefined reference to `QApplication::~QApplication()'
    main.o(.text+0x1bb): In function `main':
    : undefined reference to `QPushButton::~QPushButton()'
    main.o(.text+0x1d4): In function `main':
    : undefined reference to `QString::shared_null'
    main.o(.text+0x1de): In function `main':
    : undefined reference to `QStringData::deleteSelf()'
    main.o(.text+0x1f0): In function `main':
    : undefined reference to `QFont::~QFont()'
    main.o(.gnu.linkonce.r._ZTV6QGList+0xc): undefined reference to `QGList::clear()'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x10): undefined reference to `QGList::~QGList()'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x14): undefined reference to `QGList::~QGList()'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x18): undefined reference to `QPtrCollection::newItem(void*)'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x20): undefined reference to `QGList::compareItems(void*, void*)'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x24): undefined reference to `QGList::read(QDataStream&, void*&)'
    main.o(.gnu.linkonce.r._ZTV6QGList+0x28): undefined reference to `QGList::write(QDataStream&, void*) const'
    main.o(.gnu.linkonce.r._ZTI6QGList+0x8): undefined reference to `typeinfo for QPtrCollection'
    collect2: ld returned 1 exit status
    make: *** [qt] Erreur 1
    sachant que je suis sous mdk 10.1 a+

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Question : quelle est votre linux et sa version ?

    J'ai eu déjà des problèmes avec la configuration de Qt.
    Avec Linux Mandrake 9.1 .

    J'ai procédé ainsi :
    1) mode root avec vi
    2) aller dans /usr/lib/qt3/mkspecs/linux-g++
    3) editer qmake.conf
    4) modifier l'entrée QMAKE_LIBS_QT
    5) ajouter -mt à cette entrée.
    6) QMAKE_LIBS_QT= -lqt -mt (résultat à définir )
    7) enregistrer quitter

    Cela peut peut-être vous aider, mais je m'avance
    un peu vite car je n'ai aucune idéee de votre configuration.

    Cordialement.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Là tu ne lies pas avec la bibliothèque de Qt. (au passage : c'est une erreur d'édition de liens et non de compilation).

    Par contre ne me demande pas comment faire, je laisse QtDesigner me générer le makefile. Ca doit être un truc du genre -lqt ou -lqt-mt.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Pour Abdelfettah.

    Avec Qt3 , la compilation ne se fait pas avec g++, mais
    avec qmake , si ce dernier est dans votre chemin d'accés
    ($PATH).

    A la sortie sauvegardée de votre application "myproject.pro",
    Qt3 crée un "Makefile".

    qmake -o Makefile myproject.pro

    Voir la documentation de Qt3, c'est lourd, mais on s'y
    retrouve aprés compréhension.

    Cordialement.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    je suis sous mandrake linux, kernel 2.6.8.1-12.

    to Loulou24
    je vois pas ton bouton pr generer le makefile dans qtdesigner.

    to dj.motte
    ça ne marche pas avec ta ligne de commande bizaroide. mci qd meme !

    donc tjrs pas reglé mon probleme.
    help

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Ben il te manque la lib qt à la compilation. Le fichier makefile de QtDesigner c'est le fichier projet .pro (en fait c'est un meta makefile : un générateur de makefile via qmake).
    Il doit manquer ceci dans ton fichier .pro:
    pour indiquer que ton programme nécessite d'être linké avec la lib Qt.

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Je me suis trompé, désolé
    Mais essayer
    a) qmake -o Makefile myproject.pro
    cela crée le Makefile
    puis seulement
    b) make
    Tout simplement cela va traiter le Makefile.

    Cordialement.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    au fait j'ai un autre exemple avec des fichiers headers, un peu plus compliqué que le code source la haut, et avec la commande qmake, il me genere un Makefile differents.
    j'ai copié la premiere partie du Makefile, celle ou ya les options de compilation ...et là ça marche impec.
    ou est le probleme ? je sais pas. faut p'etre mettre autre chose dans le main, rajouter qq lignes pr que qmake me fasse les bons likages.
    merci les gas !

    probleme resolu

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Il doit manquer ceci dans ton fichier .pro:
    pour indiquer que ton programme nécessite d'être linké avec la lib Qt.

  12. #12
    Membre habitué
    Profil pro
    Enculeur de mouches
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Enculeur de mouches

    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Abdelfettah
    ou est le probleme ? je sais pas.
    Le makefile utilisé pour la compil' qui pose problème ne dispose pas des bonne option d'édition de lien. Regarde du coté de la ligne qui défini $(LIBS) (une ligne du type "LIBS = ...")
    Les option "-L" servent à définir les répertoires qui contiennent les bibs' et "-l" avec quelles bibs précises l'éditeur de liens va associer le programme.
    Pour une bib nommée "libFoobar.EXT" (où EXT peut être "so" (bib dynamique, équivalent .DLL) ou "a" (bib statique, incorporée au programme, en réalitée un bête archive de ".o")
    il faut ajouter l'option "-lfoobar".

    Pour finir, comme on t'as déjà dis "CONFIG += qt" dans le ".pro"...

    Citation Envoyé par Abdelfettah
    faut p'etre mettre autre chose dans le main, rajouter qq lignes pr que qmake me fasse les bons likages.
    Arrp !! Pas touche au code !
    Non sérieusement, c'est vraiment pas un problème de ce type là !
    Gaïa n'est pas une marchandise.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    et bien j'ai touché le .pro, en mettant CONFIG +=qt et ça n'a rien donné. au fait d'apres mes souvenirs dans l'exemple plus gros que j'ai, le fichier .pro était le meme que celui de programme qui marchait pas (que j'ai écrit la haut) a peu de choses près (les sources n'étant pas les mêmes) ^^.
    alors ce n'est pas un gros probleme vue qu'un simple copier coller me suffit, mais ça vous en pose une colle !

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Points : 403
    Points
    403
    Par défaut
    Bonsoir,

    Pour Abdelfettah,
    alors ce n'est pas un gros probleme vue qu'un simple copier coller me suffit, mais ça vous en pose une colle !
    Pas sur que le "copier coller" soit une formule magique.

    Pour la colle :

    Il faut peut-être revoir le fichier Linux
    de configuration afin d'y inclure la
    variable d'environnemnt "QTDIR".
    par ex :

    Dans .bash_profile ( à transposer selon votre configuration )

    # .bash_profile

    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    # User specific environment and startup programs
    QTDIR=/usr/lib/qt3
    PATH=$PATH:$HOME/bin:$QTDIR/bin
    MANPATH=$QTDIR/man:$MANPATH
    LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

    export QTDIR MANPATH PATH LD_LIBRARY_PATH
    unset USERNAME
    Si vous faîtes ces modifications dans .bash_profile
    relancer votre Linux sur votre simple nom d' utilisateur,
    cela permet de tenir compte de la nouvelle configuration.

    Maintenant concernant le premier exemple que vous
    citez sur le thème (post) , et à supposer que votre source est
    un "main.cpp" dans un répertoire exclusif.

    Essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    qmake -project
    qmake
    make
    Si cela ne va pas :
    ( Vous pouvez naturellement transposer les instructions
    qui suivent selon votre configuration )
    1) mode root avec vi
    2) aller dans /usr/lib/qt3/mkspecs/linux-g++
    3) editer qmake.conf
    4) modifier l'entrée QMAKE_LIBS_QT
    5) ajouter -mt à cette entrée.
    6) QMAKE_LIBS_QT= -lqt -mt (résultat que l'on doit voir )
    7) enregistrer quitter
    Concernant les mini-applications pour tester QT Designer,
    mode graphique, j' ai essayé :

    Créer un répertoitre /home/toto/p1

    A) Lancer Qt Designer
    B) Création d' un nouveau projet.
    C) Inclure un Dialog
    D) inclure un bouton "quit"
    E) Affecter au bouton "quit" l'évènement "close"
    F) Inclure une fonction "main" // very important
    G) Tout sauvegarder et quitter dans /home/toto/p1/p1.pro

    Ouvrir une console
    Aller dans /home/toto/p1
    lancer

    qmake -o Makefile p1.pro
    make

    cela devrait tourner au lancer de ./p1

    Si cela ne fonctionne pas , je me fais moine au Tibet !


    Cordialement.

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo