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 :

Probleme de link d'une appli QT avec Dev-C++


Sujet :

Qt

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut Probleme de link d'une appli QT avec Dev-C++
    Bonsoir, voici mon probleme :

    Lorsque je compile mon code, le compilateur me donne ces erreurs de link :

    [Linker error] undefined reference to `vtable for MyApp'
    [Linker error] undefined reference to `vtable for MyApp'
    [Linker error] undefined reference to `vtable for MyApp'
    [Linker error] undefined reference to `vtable for MyApp'
    ld returned 1 exit status
    [Build Error] [Qtpremprog.exe] Error 1

    Je ne vois pas où est l'erreur, car j'ai bien configurer mes options de projets comme il faut, dans l'onglet parametres et le Makefile.

    Voici mon code, à tout hasard.... :

    ui_premprog.h :

    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
    #ifndef UI_PREMPROG_H
    #define UI_PREMPROG_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QLineEdit>
    #include <QtGui/QPushButton>
    #include <QtGui/QWidget>
     
    class Ui_Form
    {
    public:
        QPushButton *bCalculer;
        QLineEdit *lineEdit_3;
     
        void setupUi(QWidget *Form)
        {
        Form->setObjectName(QString::fromUtf8("Form"));
        bCalculer = new QPushButton(Form);
        bCalculer->setObjectName(QString::fromUtf8("bCalculer"));
        bCalculer->setGeometry(QRect(210, 180, 75, 23));
        lineEdit_3 = new QLineEdit(Form);
        lineEdit_3->setObjectName(QString::fromUtf8("lineEdit_3"));
        lineEdit_3->setGeometry(QRect(30, 20, 241, 141));
     
        retranslateUi(Form);
     
        QSize size(307, 224);
        size = size.expandedTo(Form->minimumSizeHint());
        Form->resize(size);
     
     
        QMetaObject::connectSlotsByName(Form);
        } // setupUi
     
        void retranslateUi(QWidget *Form)
        {
        Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
        bCalculer->setText(QApplication::translate("Form", "PushButton", 0, QApplication::UnicodeUTF8));
        Q_UNUSED(Form);
        } // retranslateUi
     
    };
     
    namespace Ui {
        class Form: public Ui_Form {};
    } // namespace Ui
     
    #endif
    MyApp.h :

    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
    #ifndef QtpremProg
    #define QtpremProg
     
     
    #include "ui_premprog.h"
     
     
    class MyApp : public QWidget, private Ui::Form
    {
          Q_OBJECT
     
    public:
          MyApp(QWidget *parent = 0);
     
    public slots :
           void Ecrire();
    };
     
     
    #endif
    MyApp1.cpp :

    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
    #include <QtGui>
    #include "MyApp.h"
     
     
    MyApp::MyApp(QWidget *parent)
    {
        setupUi(this);
        connect(bCalculer, SIGNAL(clicked()), lineEdit_3, SLOT(Ecrire()));
    }
     
    void MyApp::Ecrire()
    {
         QString chaine = "Ma premiere appli QT en GUI!!!!";
     
         lineEdit_3->setText(chaine);
    }

    main.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <QApplication>
     
    #include "MyApp.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        MyApp *dialogue = new MyApp;
     
        dialogue->show();
     
        return app.exec();
    }

    je precise que ui_premprog.h a été crée grâce à Qt designer.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    moc, moc et encore moc...
    Tu gères toi-même ton makefile ? Si oui, n'oublie pas de générer le fichier moc pour chaque en-tête ayant un Q_OBJECT.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Normalement il le fait automatiquement, j'ai fait en sorte qu'il le puisse en liant aux projet un fichier qt.mak .
    Jusqu'ici cela marchait correctement...

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Regénère ton makefile avec un qmake puis recompile pour voir.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    J'ai utilisé qmake, mais xcelui-ci me genere plusieurs Makefile :
    Makefile
    Makefile.Release
    Makefile.Debug

    Je les ai tous essayer, seul Makefile.Release me fournit un exe(un exe qui se contente juste de faire apparaitre la fenetre c'est tout, on ne peut rien faire dedans) mais lorsque je compile, on m'indique "Project is not compiled". Je ne comprend pas pourriez-vous m'aider?

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu as un pb quelque part, parce que si je fais comme toi, j'ai bien aussi 3 MakeFile - le global + les 2 pour les 2 configurations par défaut sous Windows -, mais ça marche sans pb chez moi...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Voici ce que j'obtiens en utilisant le Makefile global :

    Entering directory `C:/Qt/bin/premprog'
    Nothing to be done for `all'.
    Leaving directory `C:/Qt/bin/premprog'
    Entering directory `C:/Qt/bin/premprog'
    cannot find -lqtmaind
    ld returned 1 exit status
    *** [debug\premprog.exe] Error 1
    Leaving directory `C:/Qt/bin/premprog'
    Makefile [Build Error] [debug-all] Error 2

    Avec Makefile.debug :

    cannot find -lqtmaind
    ld returned 1 exit status
    Makefile.Debug [Build Error] [debug\premprog.exe] Error 1

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Bon, c'est clair, je crois, il te manque les bibliothèques de Qt.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Il me manque les bibliotheques de Qt? Mais je les ai pourtant.
    Et je ne comprends pas pourquoi ça ne marche pas, alors que mes autres projets marchent (bien qu'ils ne possédaient qu'un main).

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Regarde si tu as libqtmaind.lib - indiqué dans l'erreur que tu as donnée - et vérifie qu'elle est bien dans le PATH des bibliothèques.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    J'ai bien un libqtmain.a mais pas de libqtmaind.a, par contre j'ai un qtmaind.prl (seulement ce n'est pas une lib ça).
    Je vais essayer de chercher la lib sur le net et l'ajouter au PATH des libs.

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Ca ne sert à riend e la chercher sur le net, tu l'as déjà, sauf pas compilée, alors compile-là. De plus, la version sur le net peut être un peu différente.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Coment on fait ça? parce que j'en ai aucune idée.

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    qmake && make.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Juste pour savoir, mon code est-il correct?
    J'ai compilé toutes les librairies en debug, et maintenant jai obtenu libqtmaind.a...etc, jexecute qmake ensuite je lance make, mais le programme n'affiche que ce que j'ai fait avec designer, on ne peut pas interagir avec comme je l'ai codé.

    EDIT: Une chose tres surprenante s'est produit, j'ai recompiler avec dev-c++, il maffichait encore des erreurs de link, j'ai ensuite lancer make.bat(qui ne semblait pas marcher auparavant), cela m'a fournit des executables, qui marchent bel et bien cette fois ci.

  16. #16
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je ne sais pas pour dev-cpp, je ne l'utilise pas, et je ne l'utiliserais pas si j'étais toi - pas maintenu, regarde du côté de wxdev-cpp pour garder un système identique ou Code::Block -
    Pour ce qui est de ce qui s'affiche ensuite, il indique un message d'erreur à l'exécution ou pas ?

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    pour tout dire, je travail sur dev-c++ mais aussi sur Visual C++.
    J'avais entendu dire que dev-c++ n'etait plus maintenu, je pense que je vais opter pour code::blocks (à condition toutefois que l'utiisation de Qt sur celui-ci soit assez aisée).

    Sinon pour reponsre à ta question, non il n'affiche pas d'erreur d'execution, mais des erreurs leaving directory, entering directory, apres compilation et linkage.

  18. #18
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    leaving et entering, ce ne sont pas des erreurs, mais des indications, je te parle de l'exécution, si tu as une fenêtre de commande à côté - ou sous Linux -, c'est affiché.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 82
    Par défaut
    Non je n'ai rien de tout cela.
    Je trouve ça bizarre que tout ai marcher d'un seul coup... enfin je vais pas m'en plaindre ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/08/2006, 01h02
  2. [TomcaT]Config une appli J2EE avec tomcat/apache sous linux
    Par kameha dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 31/03/2006, 15h05
  3. Une appli WAP avec XMLRAD
    Par et.et-and-co dans le forum XMLRAD
    Réponses: 1
    Dernier message: 30/01/2006, 14h18
  4. [Plugin][Débutant] Lancement d'une appli Java avec un plugin
    Par antares24 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 29/07/2004, 14h18
  5. Définir une appli JEE avec JB7 Entreprise
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 10/06/2003, 11h48

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