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

Discussion :

Utilisation du moc dans Visual Studio

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut Utilisation du moc dans Visual Studio
    Bonjour,

    Je tiens tout d abord à vous prévenir que je suis très débutant. Je vous remercie donc de bien vouloir m'excuser si ce que j'écris semble débile.

    J'ai suivit un tutoriel c++ d'un site jusqu'à l'étape ou dans Qt on utilise les slot perso et ou on fait appelle au "Q_OBJECT" dans le header MaFenetre.
    Jusque la tout fonctionnait bien, mais a partir de ce point lorsque je compile j'obtiens les erreurs suivantes:

    Error 1 error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall MaFenetre::metaObject(void)const " (?metaObject@MaFenetre@@UBEPBUQMetaObject@@XZ) MaFenetre.obj testqtd

    Error 2 error LNK2001: unresolved external symbol "public: virtual void * __thiscall MaFenetre::qt_metacast(char const *)" (?qt_metacast@MaFenetre@@UAEPAXPBD@Z) MaFenetre.obj testqtd

    Error 3 fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\link.EXE"' : return code '0x460' NMAKE testqtd

    Error 4 error LNK2001: unresolved external symbol "public: virtual int __thiscall MaFenetre::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@MaFenetre@@UAEHW4Call@QMetaObject@@HPAPAX@Z) MaFenetre.obj testqtd

    Error 5 fatal error LNK1120: 3 unresolved externals debug\testqtd.exe testqtd

    Error 6 fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\nmake.exe"' : return code '0x2' NMAKE testqtd

    Error 7 error PRJ0019: A tool returned an error code from "Performing Makefile project actions" testqtd testqtd
    Mon code est celui du tuto mais pour simplifier la lecture a ceux qui voudrai bien m aider je le réécris ici :

    Code MaFenetre.h : 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
    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE
     
    #include <QApplication>
    #include <QObject>
     
    #include <QWidget>
    #include <QPushButton>
    #include <QLCDNumber>
    #include <QSlider>
     
    class MaFenetre : public QWidget
    {
    Q_OBJECT
     
    public:
    MaFenetre();
     
    public slots:
    void changerLargeur(int largeur);
     
    private:
    QSlider *m_slider;
    };
     
    #endif

    Code MaFenetre.cpp : 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
    #include "MaFenetre.h"
     
     
    void MaFenetre::changerLargeur(int largeur)
    {
    setFixedSize(largeur, 100);
    }
     
    MaFenetre::MaFenetre() : QWidget()
    {
    setFixedSize(200, 100);
     
    m_slider = new QSlider(Qt::Horizontal, this);
    m_slider->setRange(200, 600);
    m_slider->setGeometry(10, 60, 150, 20);
     
    QObject::connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(changerLargeur(int)));
    }

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

    Il semblerai après plusieurs recherches sur le net que j'ai un problème lié au MOC (ou quelque chose comme ca... tout cela reste très obscure pour moi).

    Actuellement, j'utilise Visual Studio 2008 sp1 et Qt SDK 2010.02.1, en utilisant un autre tutoriel j'ai réussi plus ou moins a faire la config de visual studio pour compiler et lancer mon projet (cela fonctionnait bien jusqu'à l'histoire du "Q_OBJECT").

    Si j essaye de passer par ligne de commande voici le résultat :

    qmake -project
    => QFileinfo::absolutePath: Constructed with empty filename
    qmake
    => rien ne s ecrit
    mingw32-make
    =>plein de Warning: null charactere(s) ignored et a la fin
    =>MaFenetre.cpp:1: error: 'i' does not name type
    =>MaFenetre.cpp:1: error: 'M' does not name type
    =>mingw32-make[1]: ***[debug/MaFenetre.o] Error 1
    =>mingw32-make[1]: Leaving directory '.........chemin du projet
    =>mingw32-make: ***[debug] Error 2
    Pour info si je lance :
    "c:\qt\2010.02.1\qt\bin\moc.exe MaFenetre.h -o moc_MaFenetre.cpp"
    J'obtiens :

    MaFenetre.h(0): Warning: No relevant classes found. No output generated.
    J'ai vu d'autres tutos qui disaient d'essayer de mettre le moc.exe dans les outils externes, j'ai aussi essayé ça mais la encore VS me dit qu'il ne trouve aucun fichier à moc'er pourtant "Q_OBJECT" est bien dans ma classe.

    J'ai aussi essayé un autre truc faisant référence a "Custom Build Step" mais malheureusement je n'arrive pas a trouver ce custom build step dans ma version de VS.


    Voila, j'espère vous avoir fournie assez d'info pour que vous puissiez m'aider car j'aimerai vraiment pouvoir continuer ce tuto.

    Merci d avance pour ceux qui voudront bien m'aider.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    Bonjour,

    le moc permet gérer les macros propre a Qt qui concerne principalement (uniquement ?) les signaux/slots et il doit être utilisé dés que la macro Q_OBJECT est utilisée.

    D'autre t'en diront peut être plus mais Qt propose un plugin pour Visual Studio il me semble.

    Enfin ,

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Pour générer des projest pour visual studio, tu peut utiliser la commande :
    qmake -tp vc -r
    Ça génère un fichier vcproj à ouvrir avec visual et ça marche trés bien. C'est la méthode que j'utilise.

    Si ta version de visual est une version payante, il existe un plug in. Intéressant pour l'affichage dans le debuggeur sinon, je ne connait pas.

    Par contre il te faut une version Qt pour visual. Celle livré avec Qt sdk est une version pour mingw.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Merci pour vos réponses rapides

    atttchoum => je vais regarder ce que je peux trouver pour le plu-gin dont tu parle, si tu as un lien ca serait pas de refus

    yan => j'ai essayé la commande que tu as écris mais j'obtiens ceci :

    WARNING: Unable to generate output for ...monchemindeprojet...Makefile.debug [TEMPLATE vcapp]
    WARNING: Unable to generate output for..monchemindeprojet...Makefile.release [TEMPLATE vcapp]
    Ma version Visual Studio est payante, mais j'ai recompilé (configure & nmake & nmake clean) Qt comme expliqué dans un autre tuto.... je me serai plante ?

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par senpu69 Voir le message
    Ma version vs est payante,
    donc ça vaut le coup d'installer le plug in


    Citation Envoyé par senpu69 Voir le message
    ... je me serai plante ???
    Quel version de Qt as tu compilé?
    D'où viens les sources?
    Pourquoi ne pas prendre un version déjà compilé?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    Pour le plugin : http://qt.nokia.com/downloads/visual-studio-add-in

    Pour le formation, voir les cours et tutoriels Qt : http://qt.developpez.com/tutoriels/

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Citation Envoyé par atttchoum Voir le message
    Merci atttchoum je vais voir de ce pas

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Par défaut
    Citation Envoyé par yan Voir le message
    donc ça vaut le coup d'installer le plug in

    Quel version de Qt as tu compilé?
    D'où viens les sources?
    Pourquoi ne pas prendre un version déjà compilé?

    J'ai télécharger les sources sur qt.nokia.com/download, et j ai pris le qt SDK for windows.

    Pourquoi j'ai pris ça et pas autre chose, parce que comme je l'ai dit au début je suis débutant et je comprends pas trop ce que je suis en train de faire. Donc j'ai simplement pris ce que le tuto que je suivait disait de faire. Et jusqu'à ce problème de Q_OBJECT ça fonctionnait plutôt bien

    Maintenant effectivement s'il y a un plu-gin cela peut être intéressante pour moi, reste de savoir où le trouver, comment l'installer, comment le faire marcher.

    Je suis désolé de paraitre stupide, mais même si ces détails sont surement limpide et terriblement simple pour la plus part d'entre vous, ca ne l'est malheureusement pas pour moi... enfin pas encore

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par senpu69 Voir le message
    J ai telecharger les sources sur qt.nokia.com/download, et j ai pris le qt SDK for windows.
    C'est le premier problème. Quand tu veut compiler Qt il faut partir de source propre sans aucune ancienne compilation. Or là tu as déjà des choses compilé pour mingw.

    Si tu utilise visual 2008, prend ceux déjà compilé
    http://qt.nokia.com/downloads

    Tu peut aussi regarder dans nos binaires :
    http://qt.developpez.com/binaires/


    Citation Envoyé par senpu69 Voir le message
    Je suis desole de paraitre stupide, mais meme si ces details sont surement limpide et teriblement simple pour la plus part d entre vous, ca nel ai malheureusement pas pour moi... enfin pas encore
    Tu ne parait pas stupide, t'inquiète ce n'est pas toujours facile de s'y retrouver.

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

Discussions similaires

  1. [TeamCity] Utilisation des artefacts dans Visual studio
    Par elpaulo dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 13/05/2015, 12h14
  2. [Débutant] Utiliser des ressources dans Visual studio express 2010 c++
    Par Brontozor dans le forum Visual Studio
    Réponses: 1
    Dernier message: 06/03/2013, 21h17
  3. Réponses: 1
    Dernier message: 21/06/2011, 12h01
  4. utiliser string.h dans visual studio 2005
    Par boss_gama dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/03/2007, 15h27
  5. [3.0] Utilisation de Winfx dans Visual Studio
    Par troxsa dans le forum Visual Studio
    Réponses: 3
    Dernier message: 08/12/2006, 15h40

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