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

QxOrm Discussion :

Compilation de projet de base


Sujet :

QxOrm

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Architekth
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut Compilation de projet de base
    Salut à tous,

    voilà j'ai un souci... ça fait quelques heures que je trime dessus et soi je suis con, suis j'ai zapé un truc. Toujours est-il que je vois pas le problème. Voici mon code :

    Test_QxOrm.pro
    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
     
    # Indiquez le chemin vers le fichier QxOrm.pri
    include(D:/STAGE/QxOrm_1.2.1/QxOrm/QxOrm.pri)
     
    QT += sql
    DEFINES += _BUILDING_QX_TEST
    PRECOMPILED_HEADER = precompiled.h
    CONFIG += console
    CONFIG(debug, debug|release){
        LIBS += -l"QxOrmd"
    } else {
        LIBS += -l"QxOrm"
    }
    SOURCES += \
        main.cpp \
        MyWnd.cpp \
        Person.cpp \
        SQLManager.cpp
     
    HEADERS += \
        MyWnd.h \
        Person.h \
        SQLManager.h \
        export.h \
        precompiled.h
    export.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
     
    #ifndef EXPORT_H
    #define EXPORT_H
     
    #ifdef _BUILDING_QX_TEST
    #define QX_REGISTER_HPP_PERSON QX_REGISTER_HPP_EXPORT_DLL
    #define QX_REGISTER_CPP_PERSON QX_REGISTER_CPP_EXPORT_DLL
    #else
    #define QX_REGISTER_HPP_PERSON QX_REGISTER_HPP_IMPORT_DLL
    #define QX_REGISTER_CPP_PERSON QX_REGISTER_CPP_IMPORT_DLL
     
    #endif
     
    #endif // EXPORT_H
    Person.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
     
    #ifndef PERSON_H
    #define PERSON_H
     
    class Person
    {
    public:
        Person();
        virtual ~Person() {}
     
    public:
        long id;
        QString name;
        QString surname;
     
    private:
    };
     
    QX_REGISTER_HPP_PERSON(Person, qx::trait::no_base_class_defined, 0) // Le problème semble être ici
     
    #endif // PERSON_H
    Person.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
    17
    18
    19
    20
    21
    22
     
    #include "Person.h"
    #include "precompiled.h"
     
    QX_REGISTER_CPP_PERSON(Person) // Problème probablement ici aussi
     
    namespace qx
    {
        template <> void register_class(QxClass<Person> &t)
        {
            t.id(&Person::id, "id");
            t.data(&Person::name, "name");
            t.data(&Person::surname, "desc");
        }
    }
     
     
    Person::Person()
        : id(0)
    {
     
    }
    precompiled.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifndef PRECOMPILED_H
    #define PRECOMPILED_H
     
    #include <QxOrm.h>
     
    #include "export.h"
     
    #endif // PRECOMPILED_H
    Erreur de compilation :
    * expected identifier before string constant ||||| Person.cpp 4
    * expected ',' or '...' before string constant ||||| Person.cpp 4
    * expected constructor, destructor, or type conversion before 'qx' ||||| Person.cpp 4

    Si vous avez une idée n'hésitez pas.

    OS: Windows 7 x 64
    Compilateur : MinGW utilisé avec QtCreator
    Version Qt : 4.7.4

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 482
    Par défaut


    Le mieux est que tu zippes ton projet et que tu l'ajoutes sur ce thread.
    Comme ça je pourrai le corriger et t'expliquer ce qui ne va pas...
    Je te joindrai un autre projet avec toutes les corrections et tu pourras comparer les différences (avec WinMerge, UltraCompare, WinDiff, etc...).

    Pour le moment, juste un truc à corriger : dans ton fichier Person.cpp, la ligne #include "precompiled.h" doit être la 1ère ligne de ton fichier.
    C'est comme ça que la notion de precompiled header fonctionne en C++ : tu dois inclure le precompiled header en 1er sur chaque fichier source (*.CPP).
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  3. #3
    Membre confirmé
    Avatar de Architekth
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    D'accord merci pour ta réponse! Oui j'ai corrigé cette faute d'inattention.

    Pour le reste j'ai corrigé mon problème. Il suffisait d'inclure :

    dans le fichier Person.cpp. Maintenant ça compile parfaitement.

    Une autre question cela dit.

    Est-ce normal que qx::QxSqlDatabase::getSingleton()->isValid() est 'private'? Comment puis-je vérifier par exemple que mon Driver à bien été défini? Dans Qt, QSqlDatabase::isValid() est accessible. De plus, on a la méthode QSqlDatabase::open() qui renvoi 'true' si la connexion à bien été ouverte. Y a t'il quelques choses de similaire avec QxSqlDatabase? Je n'ai pas trouvé.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 482
    Par défaut
    Maintenant ça compile parfaitement.
    Oki cool

    Est-ce normal que qx::QxSqlDatabase::getSingleton()->isValid() est 'private'? Comment puis-je vérifier par exemple que mon Driver à bien été défini? Dans Qt, QSqlDatabase::isValid() est accessible. De plus, on a la méthode QSqlDatabase::open() qui renvoi 'true' si la connexion à bien été ouverte. Y a t'il quelques choses de similaire avec QxSqlDatabase? Je n'ai pas trouvé.
    Si tu veux vérifier la connexion à ta BDD, tu peux utiliser la méthode static suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static QSqlDatabase qx::QxSqlDatabase::getDatabase()
    Comme tu peux le voir, cette méthode renvoie un QSqlDatabase, tu auras donc toutes les méthodes fournies par Qt...
    Voici un lien vers la doc de la classe :
    http://www.qxorm.com/doxygen/html/cl..._database.html
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  5. #5
    Membre confirmé
    Avatar de Architekth
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    D'accord merci! Pile ce qu'il me fallait

    Et super travail pour la bibliothèque! Très utile! Je commence tout juste à l'utiliser mais c'est plutôt facile à prendre en main. Juste le début avec les fichiers à configurer (.pro/.pri) et les macro (export.h) est un peu dure a assimiler. Enfin je dois avoué que je suis pas trop habitué étant donnée que j'ai l'habitude de me contenter de ce que Qt me fourni à la base !


  6. #6
    Membre confirmé
    Avatar de Architekth
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 123
    Par défaut
    J'aurai une question supplémentaire... Quand on initialise les différents paramètres de connexion comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        qx::QxSqlDatabase::getSingleton()->setDriverName("QMYSQL");
        qx::QxSqlDatabase::getSingleton()->setHostName("localhost");
        qx::QxSqlDatabase::getSingleton()->setDatabaseName("myDB");
        qx::QxSqlDatabase::getSingleton()->setUserName("root");
        qx::QxSqlDatabase::getSingleton()->setPassword("");
    Et qu'on réalise une requête tel que, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QSqlError queryError = qx::dao::create_table<Person>();
    Comment est réalisé la connexion/déconnexion à la base de donnée?
    Est-ce ainsi ?

    Paramètre de connexion (host, db, username, password) initialisé ->>>>> requête via qx::dao (connexion >>> requête >>> déconnexion)

    C'est à dire, est-ce que la connexion s'effectue lors de la requête (juste avant évidement) (qx::dao::create_table<Person>(); ou qx::dao::insert(person1); ou autre...) puis déconnexion lorsque la requête est effectuée? Ou le processus de connexion/déconnexion est effectué différemment?

    En bref, j'aimerai savoir si le processus de connexion/déconnexion est géré en interne ou si comme avec QSqlDatabase il me faut gérer le 'open()' et 'close()'.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/04/2009, 19h34
  2. projet de base Interbase 7.5 avec images
    Par KRis dans le forum InterBase
    Réponses: 8
    Dernier message: 13/06/2005, 10h17
  3. [CVS] compiler un projet cvs?
    Par tomburn dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/03/2005, 10h12
  4. compiler un projet
    Par piscine dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/09/2004, 14h05
  5. Comment compiler un projet en ligne de commande ?
    Par mathieutlse dans le forum EDI
    Réponses: 3
    Dernier message: 11/07/2003, 13h32

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