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 du code généré par QxEntityEditor


Sujet :

QxOrm

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Paysan
    Inscrit en
    Juin 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2015
    Messages : 45
    Par défaut Compilation du code généré par QxEntityEditor
    Bonsoir,

    Je parviens à compiler ce que génère QxEE, pour obtenir les librairies.
    A la suite de quoi, j'ai:
    dans le répertoire BaseAgri/QxBase/bin la librairie libBaseAgrid.so.1.0.0 (14.7 Mo)
    dans le répertoire BaseAgri/QxModel/bin la librairie libBaseAgriModeld.so.1.0.0 (16.8 Mo)
    et dans BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug
    BaseAgri_main.model_view.gen.o oCulture.model_view.o
    Makefile oParam.model_view.gen.o
    moc_oBande.model_view.gen.cpp oParam.model_view.o
    oBande.model_view.gen.o oStIntOb.model_view.gen.o
    oBande.model_view.o oStIntOb.model_view.o
    oCulture.model_view.gen.o

    C'est à partir de là que je construis mon projet BaseAgri, en veillant à ne plus toucher
    ni à ce qui a été généré ni a ce qui a été compilé dans QxBase, dans QxModel ou dans les fichiers
    listés ci-dessus dans BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug
    J'obtiens une compilation, mais pas le link.

    Je crois avoir passé tous les tutoriels et videos que j'ai pu trouver, mais (ce doit être trivial)
    je n'ai rien trouvé, au delà des compilations et générations des librairies, comment les utiliser
    dans un projet. (je prends comme hypothèse que les classes à utiliser sont celles décrites dans
    les o*.gen.h ...)
    Pour le precompiled.h, j'ai du passer toutes les combinaisons possibles des différents .h générés.
    Actuellement j'ai:
    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 PRECOMPILED_H
    #define PRECOMPILED_H
     
    #include <QxOrm.h>
    #include "export.h"
     
    #include "QxBase/include/BaseAgri_export.gen.h"
    //#include "QxBase/custom/include/BaseAgri_precompiled_header.h"
     
    //#include "QxModel/include/BaseAgri_export.model_view.gen.h"
    //#include "QxModel/custom/include/BaseAgri_precompiled_header.model_view.h"
     
     
    #endif // PRECOMPILED_H
    Pour les exports aussi.

    BaseAgri.pro est:
    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
     
    #-------------------------------------------------
    #
    # Project created by QtCreator 2015-06-29T21:41:59
    #
    #-------------------------------------------------
     
    QT       += core gui sql
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = BaseAgri
    TEMPLATE = app
    CONFIG += C++11
    CONFIG += precompile_header
    PRECOMPILED_HEADER = precompiled.h
     
    SOURCES += main.cpp\
    #    build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/moc_mainwindow.cpp \
        mainwindow.cpp \
        taccesdao.cpp \
        bureaudelegate.cpp
     
    HEADERS  += \
        mainwindow.h \
    #    QxBase/include/oBande.gen.h \
    #    QxBase/include/oCulture.gen.h \
    #    QxBase/include/oParam.gen.h \
    #    QxBase/include/oStIntOb.gen.h \
        taccesdao.h \
        bureaudelegate.h
     
    INCLUDEPATH += ./../Libs/QxOrm/include/
     
    FORMS    += \
        mainwindow.ui
     
    #LIBS += -L/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/lib -lQxOrmd -lboost_serialization
    LIBS += -lboost_serialization
     
    unix:!macx: LIBS += -L$$PWD/../Libs/QxOrm/lib/ -lQxOrmd
     
    INCLUDEPATH += $$PWD/../Libs/QxOrm/include
    DEPENDPATH += $$PWD/../Libs/QxOrm/include
     
    INCLUDEPATH += $$PWD/QxBase/include
    DEPENDPATH += $$PWD/QxBase/include
     
    INCLUDEPATH += $$PWD/QxModel/include
    DEPENDPATH += $$PWD/QxModel/include
     
    OTHER_FILES += \
        Erreurs.txt \
        Messages.txt
    Que je mette en commentaire ou pas les "QxBase/include/o*.gen.h", j'obtiens le même résultat.

    Cela peut provenir du fait que dans oParam.gen.h par exemple, sur le code
    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
     
    #ifndef _BASEAGRI_OPARAM_H_
    #define _BASEAGRI_OPARAM_H_
     
    class oStIntOb;
    class oCulture;
     
    class BASEAGRI_EXPORT oParam
    {
     
       QX_REGISTER_FRIEND_CLASS(oParam)
     
    public:
     
       typedef qx::QxCollection<long, boost::shared_ptr<oStIntOb> > type_list_of_oStIntOb;
    ...
    j'ai sur BASEAGRI_EXPORT un warning avec en popup "skip identifier BASEAGRI_EXPORT"
    et la ligne QX_REGISTER_FRIEND_CLASS(oParam) est soulignée en rouge (popup "expected a declaration")

    ... mais je ne vois pas la cause de cela.

    Je suis:
    - Nettoyer le projet "BaseAgri"
    - Recompiler le projet "BaseAgri"
    J'obtiens:
    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
     
    21:58:30: Exécution des étapes pour le projet BaseAgri...
    21:58:30: Débute : "/usr/bin/make" clean
    rm -f moc_mainwindow.cpp moc_bureaudelegate.cpp
    rm -f ui_mainwindow.h
    rm -f main.o mainwindow.o taccesdao.o bureaudelegate.o moc_mainwindow.o moc_bureaudelegate.o
    rm -f BaseAgri.gch/c BaseAgri.gch/c++
    rm -f *~ core *.core
    21:58:30: Le processus "/usr/bin/make" s'est terminé normalement.
    21:58:30: Configuration inchangée, étape qmake sautée.
    21:58:30: Débute : "/usr/bin/make"
    /home/cs/Qt/5.3/gcc/bin/uic ../mainwindow.ui -o ui_mainwindow.h
    g++ -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -x c++-header -c ../precompiled.h -o BaseAgri.gch/c++
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o main.o ../main.cpp
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o mainwindow.o ../mainwindow.cpp
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o taccesdao.o ../taccesdao.cpp
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o bureaudelegate.o ../bureaudelegate.cpp
    /home/cs/Qt/5.3/gcc/bin/moc -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/home/cs/Qt/5.3/gcc/mkspecs/linux-g++ -I/home/cs/Bureau/AteliersLogiciels/BaseAgri -I/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/include -I/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/include -I/home/cs/Bureau/AteliersLogiciels/BaseAgri/QxBase/include -I/home/cs/Bureau/AteliersLogiciels/BaseAgri/QxModel/include -I/home/cs/Qt/5.3/gcc/include -I/home/cs/Qt/5.3/gcc/include/QtWidgets -I/home/cs/Qt/5.3/gcc/include/QtSql -I/home/cs/Qt/5.3/gcc/include/QtGui -I/home/cs/Qt/5.3/gcc/include/QtCore -I. ../mainwindow.h -o moc_mainwindow.cpp
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o moc_mainwindow.o moc_mainwindow.cpp
    /home/cs/Qt/5.3/gcc/bin/moc -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/home/cs/Qt/5.3/gcc/mkspecs/linux-g++ -I/home/cs/Bureau/AteliersLogiciels/BaseAgri -I/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/include -I/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/include -I/home/cs/Bureau/AteliersLogiciels/BaseAgri/QxBase/include -I/home/cs/Bureau/AteliersLogiciels/BaseAgri/QxModel/include -I/home/cs/Qt/5.3/gcc/include -I/home/cs/Qt/5.3/gcc/include/QtWidgets -I/home/cs/Qt/5.3/gcc/include/QtSql -I/home/cs/Qt/5.3/gcc/include/QtGui -I/home/cs/Qt/5.3/gcc/include/QtCore -I. ../bureaudelegate.h -o moc_bureaudelegate.cpp
    g++ -c -include BaseAgri -pipe -g -std=c++0x -Wall -W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../Qt/5.3/gcc/mkspecs/linux-g++ -I../../BaseAgri -I../../Libs/QxOrm/include -I../../Libs/QxOrm/include -I../QxBase/include -I../QxModel/include -I../../../../Qt/5.3/gcc/include -I../../../../Qt/5.3/gcc/include/QtWidgets -I../../../../Qt/5.3/gcc/include/QtSql -I../../../../Qt/5.3/gcc/include/QtGui -I../../../../Qt/5.3/gcc/include/QtCore -I. -I. -I. -o moc_bureaudelegate.o moc_bureaudelegate.cpp
    g++ -Wl,-rpath,/home/cs/Qt/5.3/gcc -Wl,-rpath,/home/cs/Qt/5.3/gcc/lib -o BaseAgri main.o mainwindow.o taccesdao.o bureaudelegate.o moc_mainwindow.o moc_bureaudelegate.o   -lboost_serialization -L/home/cs/Bureau/AteliersLogiciels/BaseAgri/../Libs/QxOrm/lib/ -lQxOrmd -L/home/cs/Qt/5.3/gcc/lib -lQt5Widgets -lQt5Sql -lQt5Gui -lQt5Core -lGL -lpthread
    mainwindow.o: In function `qx::QxModel<oParam>::init()':
    Makefile:202: recipe for target 'BaseAgri' failed
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/../../Libs/QxOrm/include/QxModelView/QxModel.h:185: undefined reference to `qx::QxSingleton<qx::QxClass<oParam> >::getSingleton()'
    mainwindow.o: In function `qx::QxModel<oCulture>::init()':
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/../../Libs/QxOrm/include/QxModelView/QxModel.h:185: undefined reference to `qx::QxSingleton<qx::QxClass<oCulture> >::getSingleton()'
    mainwindow.o: In function `qx::QxModel<oStIntOb>::init()':
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/../../Libs/QxOrm/include/QxModelView/QxModel.h:185: undefined reference to `qx::QxSingleton<qx::QxClass<oStIntOb> >::getSingleton()'
    mainwindow.o: In function `qx::QxModel<oStIntOb>::insertRows(int, int, QModelIndex const&)':
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/../../Libs/QxOrm/include/QxModelView/QxModel.h:267: undefined reference to `oStIntOb::oStIntOb()'
    mainwindow.o: In function `qx::QxModel<oStIntOb>::qxFetchById(QVariant const&, QStringList const&, QSqlDatabase*)':
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/../../Libs/QxOrm/include/QxModelView/QxModel.h:308: undefined reference to `oStIntOb::oStIntOb()'
    ...
    ...
    sur toutes les fonctions
    Je dois rater quelque chose de simple mais que je ne vois pas, et que je n'ai trouvé dans aucun document ou tutoriel.
    Normal si c'est trivial et évident pour tout le monde ...

  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


    comment les utiliser dans un projet
    Dans le package QxEntityEditor, tu as un dossier ./samples/.
    Dans ce dossier, tu as un projet QxEE nommé qxBlog.qxee, et tu as aussi un exemple de projet de type exécutable nommé qxBlogExec.zip : ce projet exécutable est un exemple pour montrer comment utiliser les classes générées par QxEntityEditor ==> tu peux donc te baser sur ce projet pour démarrer.

    En regardant rapidement ton fichier projet BaseAgri.pro, il manque au moins :
    - l'inclusion de QxOrm.pri : include($$(QXORM_DIR)/QxOrm.pri)
    - les dépendances aux différentes bibliothèques, quelque chose comme ça :
    LIBS += -l"QxOrm"
    LIBS += -l"BaseAgrid"
    LIBS += -l"BaseAgriModeld"

    Bref prend exemple sur le projet qxBlogExec.zip.
    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é
    Homme Profil pro
    Paysan
    Inscrit en
    Juin 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2015
    Messages : 45
    Par défaut
    Bonjour,
    Citation Envoyé par QxOrm Voir le message
    Dans le package QxEntityEditor, tu as un dossier ./samples/.
    Dans ce dossier, tu as un projet QxEE nommé qxBlog.qxee, et tu as aussi un exemple de projet de type exécutable nommé qxBlogExec.zip : ce projet exécutable est un exemple pour montrer comment utiliser les classes générées par QxEntityEditor ==> tu peux donc te baser sur ce projet pour démarrer.

    En regardant rapidement ton fichier projet BaseAgri.pro, il manque au moins :
    - l'inclusion de QxOrm.pri : include($$(QXORM_DIR)/QxOrm.pri)
    - les dépendances aux différentes bibliothèques, quelque chose comme ça :
    LIBS += -l"QxOrm"
    LIBS += -l"BaseAgrid"
    LIBS += -l"BaseAgriModeld"

    Bref prend exemple sur le projet qxBlogExec.zip.
    Oui. J'ai vu tout cela. Et c'est très simple (j'ai cru trop simple) car on a là:
    - trois répertoires Debug, Release, et Qt qui ne sont pas significatifs pour comprendre
    - un répertoire SRC qui contient un main.cpp qui donne envie d'utiliser, mais qui ne fourni rien pour
    arriver à compiler (c'est pas son rôle)
    - un répertoire Include qui contient:
    * precompiled.h (toujours égal à lui-même par rapport aux autres exposés)
    * export.h (toujours égal à lui-même, tellement même que j'ai cru qu'il ne concernait pas ma "quête" sur
    l'observation qu'il ne parle que de "QX_REGISTER_HPP_..." et "QX_REGISTER_CPP_..." alors que la
    génération utilise QX_REGISTER_COMPLEX_CLASS_NAME_HPP_... et QX_REGISTER_COMPLEX_CLASS_NAME_CPP_...)
    (je vais devoir considérer cette position, la mienne, comme absurde ...)
    - et un .pro, assez conforme à ce que j'ai l'habitude d'utiliser, avec des INCLUDEPATH que j'ai aussi, des libs
    que j'ai aussi habituellement QxOrmd, (par contre je ne comprends pas pourquoi BaseAgrid et BaseAgriModeld n'étaient
    pas dans le .pro posté, ils étaient dans des précédents -mais j'avais peut-être d'autres erreurs-)
    (Par contre je viens de voir qu'un "CONFIG += C++11" y traînait; une tentative désespérée en fin de course ...)

    Mais ce .pro contient deux points que j'ai raté:
    - include QxOrm.pri dont tu relèves l'absence dans le mien (merci; comment j'ai pu rater cela ?)
    - et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER) {
    PRECOMPILED_HEADER = ./include/precompiled.h
    } # !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER)
    dont je ne comprends pas toute la subtilité, mais j'ai cru ma version exposée partout conforme à cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONFIG += precompile_header
    PRECOMPILED_HEADER = precompiled.h
    Sur ces bases, j'ai:
    - relu tous mes codes (peu nombreux quand QxEE m'a mis tout en librairie),
    - inclus le QXOrm.pri
    - modifié le export.h dans lequel trainait un "_BUILDING_MY_CACHABANPER_EXE" (!!!!)
    (remplacé par _BUILDING_MY_BASEAGRI_EXE),
    - recompilé et (Ouf!) je parviens à un link correct et une exécution de l'application
    J'obtiens:
    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
     
    Démarrage de /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/BaseAgri...
    [QxOrm] qx::QxSqlDatabase : create new database connection in thread '0xb12f7740' with key '{3910458d-05d4-4bc9-83e5-9f15e2ac7ada}'
    [QxOrm] execute sql query failed : SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=1
    Unable to fetch row
    No query
    err: ParamUnites
    [QxOrm] execute sql query failed : SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=2
    Unable to fetch row
    No query
    err: ParamClasses
    [QxOrm] execute sql query failed : SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=3
    Unable to fetch row
    No query
    err: ParamStIntOb
    [QxOrm] execute sql query failed : SELECT oCulture.IdObj AS oCulture_IdObj_0, oCulture.Abrege AS oCulture_Abrege_0, oCulture.dtDebut AS oCulture_dtDebut_0, oCulture.dtFinPrevue AS oCulture_dtFinPrevue_0, oCulture.NbUeK_Rang AS oCulture_NbUeK_Rang_0, oCulture.Sem_Plant_Rang AS oCulture_Sem_Plant_Rang_0, oCulture.idUniteSem_Plant AS oCulture_idUniteSem_Plant_0, oCulture.Prod_Rang AS oCulture_Prod_Rang_0, oCulture.idUniteProd AS oCulture_idUniteProd_0, oCulture.Libelle AS oCulture_Libelle_0 FROM oCulture WHERE KType=1
    Unable to fetch row
    No query
    [CaCha]Chargement des listes - err: Schemas
    [QxOrm] execute sql query failed : SELECT oCulture.IdObj AS oCulture_IdObj_0, oCulture.Attr AS oCulture_Attr_0, oCulture.KType AS oCulture_KType_0, oCulture.Libelle AS oCulture_Libelle_0, oCulture.Abrege AS oCulture_Abrege_0, oCulture.dtDebut AS oCulture_dtDebut_0, oCulture.dtFinPrevue AS oCulture_dtFinPrevue_0, oCulture.NbUeK_Rang AS oCulture_NbUeK_Rang_0, oCulture.Sem_Plant_Rang AS oCulture_Sem_Plant_Rang_0, oCulture.Prod_Rang AS oCulture_Prod_Rang_0, oCulture.NoUeK AS oCulture_NoUeK_0, oCulture.NbRang AS oCulture_NbRang_0, oCulture.dtFinEffective AS oCulture_dtFinEffective_0, oCulture.idUniteSem_Plant AS oCulture_idUniteSem_Plant_0, oCulture.idUniteProd AS oCulture_idUniteProd_0, oCulture.IdSchema AS oCulture_IdSchema_0, oCulture.IdBP AS oCulture_IdBP_0 FROM oCulture WHERE KType=2
    Unable to fetch row
    No query
    [CaCha]Chargement des listes - err: Cultures
    [QxOrm] execute sql query failed : SELECT oStIntOb.IdObj AS oStIntOb_IdObj_0, oStIntOb.idType AS oStIntOb_idType_0, oStIntOb.idClasse AS oStIntOb_idClasse_0, oStIntOb.Abrege AS oStIntOb_Abrege_0, oStIntOb.dtDate_Delai AS oStIntOb_dtDate_Delai_0, oStIntOb.idUniteDate_Delai AS oStIntOb_idUniteDate_Delai_0, oStIntOb.dtDuree AS oStIntOb_dtDuree_0, oStIntOb.idUniteDuree AS oStIntOb_idUniteDuree_0, oStIntOb.Libelle AS oStIntOb_Libelle_0 FROM oStIntOb WHERE idCulture=1
    Unable to fetch row
    No query
    [CaCha]Chargement des listes - err: Stades de Culture
    /home/cs/Bureau/AteliersLogiciels/BaseAgri/build-BaseAgri-Desktop_Qt_5_3_GCC_32bit-Debug/BaseAgri s'est terminé avec le code 0
    On peut remarquer que les lectures ne se font pas; je vais travailler à cela.
    Mais sans toucher aux classes des enregistrements désormais.

    Il peut y avoir une piste; j'ai toujours ce que j'ai exposé dans mon message précédent:
    J'utilise la classe oParam dans "oparam.gen.h"; dans Qt Creator, lorsque j'accède à "oparam.gen.h"
    (par "Follow symbol under cursor" -donc le lien est connu-) sur le code
    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
     
    #ifndef _BASEAGRI_OPARAM_H_
    #define _BASEAGRI_OPARAM_H_
     
    class oStIntOb;
    class oCulture;
     
    class BASEAGRI_EXPORT oParam
    {
     
       QX_REGISTER_FRIEND_CLASS(oParam)
     
    public:
     
       typedef qx::QxCollection<long, boost::shared_ptr<oStIntOb> > type_list_of_oStIntOb;
    ...
    (en bas)
    QX_REGISTER_COMPLEX_CLASS_NAME_HPP_BASEAGRI(oParam, qx::trait::no_base_class_defined, 0, oParam)
    j'ai sur BASEAGRI_EXPORT un warning avec en popup "skip identifier BASEAGRI_EXPORT"
    et la ligne QX_REGISTER_FRIEND_CLASS(oParam) est soulignée en rouge (popup "expected a declaration")
    et de même la ligne QX_REGISTER_COMPLEX_CLASS_NAME_HPP_BASEAGRI (en rouge, même popup)
    Ceci fait probablement que les classes, connues du code C++ passent en compilation, mais ne sont pas enregistrées
    dans QX_REGISTER ...
    ... mais je ne vois pas la cause de cela.

    Je mets aussi deux des six "qxFetchByQuery" qui retournent "Unable to fetch row" et "No query",
    (un de l'objet "oParam" et un de l'objet "oCulture", des codes un peu différents)
    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
    // Les listes de paramètres à usage général par divers objets
    QString query="WHERE TypeParam=";
    QSqlError err;
    // Create a model and a mapper for oParam/Unites and fetch data from database
    modelUnites = new qx::QxModel<oParam>();
    err=modelUnites->qxFetchByQuery(query+QString::number(ParamType_Unites));      if(err.type()!=0){qDebug() << "err: ParamUnites";}
    ui->lstViewUnites->setModel(modelUnites); ui->lstViewUnites->setModelColumn(2);
    ui->lstViewUnites->show();
    mapperUnites = new QDataWidgetMapper;
    mapperUnites->setModel(modelUnites);
    mapperUnites->addMapping(ui->UniteAbrege,3);
    mapperUnites->addMapping(ui->UniteLibelle,2);    //mapperUnites->toFirst();
    ui->btSupprimerUnite->setEnabled(false);
    ui->btModifierUnite->setEnabled(false);
    ui->btCreerUnite->setEnabled(false);
    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
        // Le Volet "Schémas de culture"
    // Create a model for oCulture/Schemas and fetch data from database
    modelSchemas = new qx::QxModel<oCulture>();
    lstCol << "Abrege" << "dtDebut" << "dtFinPrevue" << "NbUeK_Rang" <<
              "Sem_Plant_Rang" << "idUniteSem_Plant" << "Prod_Rang" << "idUniteProd" << "Libelle";
    lstHdr << "Abrégé" << "Déb." << "Fin" << "nU" << "SemPl" << "Unité" << "Prod." << "Unité" << "Libellé";
    lrgCol << 60 << 40 << 40 << 30 << 50 << 50 << 50 << 50 << 80;
    for(int i=0; i<lstHdr.count(); i++) tmpHash.insert(lstCol[i],lstHdr[i]);
    modelSchemas->setListOfColumns(lstCol); modelSchemas->setListOfHeaders(tmpHash);
    err=modelSchemas->qxFetchByQuery(query+QString::number(KType_Schema));
    if(err.type()!=0){qDebug() << "[CaCha]Chargement des listes - err: Schemas";}
    ui->tableViewSchemas->setModel(modelSchemas);
    //ui->tableViewSchemas->horizontalHeader()->moveSection(from,to);
    // EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit }
    // QSqlRelationalTableModel setEditStrategy(EditStrategy strategy)
    //modelSchemas->setEditStrategy();
    for(int i=0; i<lrgCol.count(); i++) ui->tableViewSchemas->setColumnWidth(i,lrgCol[i]);
    ui->tableViewSchemas->show();

  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
    (Ouf!) je parviens à un link correct et une exécution de l'application


    trois répertoires Debug, Release, et Qt qui ne sont pas significatifs pour comprendre
    • Debug : répertoire dédié au compilateur en mode debug ;
    • Release : répertoire dédié au compilateur en mode release ;
    • Qt : répertoire dédié aux objets spécifiques à Qt : moc, rcc, etc...


    C'est le fichier QxOrm.pri qui paramètre ces répertoires par défaut : rien ne t'empêche de surcharger les valeurs pour modifier ces paramètres si tu as l'habitude d'une autre arborescence.

    export.h (toujours égal à lui-même, tellement même que j'ai cru qu'il ne concernait pas ma "quête" sur l'observation qu'il ne parle que de "QX_REGISTER_HPP_..." et "QX_REGISTER_CPP_..." alors que la génération utilise QX_REGISTER_COMPLEX_CLASS_NAME_HPP_... et QX_REGISTER_COMPLEX_CLASS_NAME_CPP_...) (je vais devoir considérer cette position, la mienne, comme absurde ...)
    Tu as une explication dans la FAQ ici : http://www.qxorm.com/qxorm_fr/faq.html#faq_150

    !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER) {
    PRECOMPILED_HEADER = ./include/precompiled.h
    } # !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER)
    Les versions récentes de MinGW ont un problème avec les entêtes pré-compilés de taille conséquente (plus d'informations ici : http://www.developpez.net/forums/d14...-sous-windows/).
    L'option _QX_NO_PRECOMPILED_HEADER est donc utile uniquement pour MinGW > 4.7.

    j'ai sur BASEAGRI_EXPORT un warning avec en popup "skip identifier BASEAGRI_EXPORT" et la ligne QX_REGISTER_FRIEND_CLASS(oParam) est soulignée en rouge (popup "expected a declaration")
    et de même la ligne QX_REGISTER_COMPLEX_CLASS_NAME_HPP_BASEAGRI (en rouge, même popup) Ceci fait probablement que les classes, connues du code C++ passent en compilation, mais ne sont pas nregistrées dans QX_REGISTER ... ... mais je ne vois pas la cause de cela.
    Je pense que c'est lié à un paramétrage de Qt Creator (il doit manquer des path définis dans Qt Creator).
    Rien de grave puisque tu compiles et link sans erreur.

    Je mets aussi deux des six "qxFetchByQuery" qui retournent "Unable to fetch row" et "No query"
    As-tu essayé d'exécuter les requêtes (qu'on voit dans tes traces) avec un outil dédié à ton SGBD (par exemple SQLite Manager pour un SGBD SQLite) ?
    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é
    Homme Profil pro
    Paysan
    Inscrit en
    Juin 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2015
    Messages : 45
    Par défaut
    Citation Envoyé par QxOrm Voir le message

    As-tu essayé d'exécuter les requêtes (qu'on voit dans tes traces) avec un outil dédié à ton SGBD (par exemple SQLite Manager pour un SGBD SQLite) ?
    Que ce soit l'interrogation "naturelle", comme je la pense :
    SELECT IdObj, TypeParam, Libelle, Abrege FROM oParam WHERE TypeParam=2
    ou la forme qu'utilise QxOrm :
    SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=2
    ou une forme intermédiaire :
    SELECT oParam.IdObj, oParam.TypeParam, oParam.Libelle, oParam.Abrege FROM oParam WHERE TypeParam=2
    j'obtiens toujours le même résultat des cinq lignes concernées (sur une cinquantaine)

    Mais ce n'est pas avec SqLite Manager, car (si j'ai bien compris) il fonctionne avec Firefox et j'utilise Chrome.
    C'est donc avec SQLiteBrowser.
    Mais je vais installer SqLite Manager et voir.

    SqLite Manager donne exactement le même résultat (correct) sur toute table et toute forme d'interrogation.

    J'ai une autre information, sur la trace dans Qt Creator;
    dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Les listes de paramètres à usage général par divers objets
        QString query="WHERE TypeParam=";
        QSqlError err;
        // Create a model and a mapper for oParam/Unites and fetch data from database
        modelUnites = new qx::QxModel<oParam>();
        query=query + QString::number(ParamType_Unites);
        err=modelUnites->qxFetchByQuery(query);
        if(err.type()!=0){qDebug() << "err: ParamUnites";}
        //err=modelUnites->qxFetchByQuery(query+QString::number(ParamType_Unites));      if(err.type()!=0){qDebug() << "err: ParamUnites";}
        ui->lstViewUnites->setModel(modelUnites); ui->lstViewUnites->setModelColumn(2);
        ui->lstViewUnites->show();
    on arrive à "err=modelUnites->qxFetchByQuery(query+QString::number(ParamType_Unites));"
    avec query ="WHERE TypeParam="
    et dans modelUnites, dans m_tstDataMember, les 4 champs attendus;
    je ne peux pas entrer dans qxFetchByQuery et je ne peux que récupérer le retour;
    (d'ailleurs est-ce que ce ne serait pas une indication de mauvais paramétrage des dépendances ?)
    Pour la trace de CaChaBanPer ("relations à la main") on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Début du débogage
    &"warning: GDB: Failed to set controlling terminal: Ioctl() inappropri\303\251 pour un p\303\251riph\303\251rique\n"
    [QxOrm] qx::QxSqlDatabase : create new database connection in thread '0xb1ee1740' with key '{7b056d2c-e634-4230-8879-bfc7ebcc47dc}'
    can't find linker symbol for virtual table for `qx::IxModel' value
      found `typeinfo for BureauDelegate' instead
    can't find linker symbol for virtual table for `qx::IxModel' value
      found `typeinfo for BureauDelegate' instead
    can't find linker symbol for virtual table for `qx::IxModel' value
      found `typeinfo for BureauDelegate' instead
    [QxOrm] sql query (4 ms) : SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=1
    et pas d'erreur.
    Ici (BaseAgri sur la génération de QxEE), on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Début du débogage
    &"warning: GDB: Failed to set controlling terminal: Ioctl() inappropri\303\251 pour un p\303\251riph\303\251rique\n"
    [QxOrm] qx::QxSqlDatabase : create new database connection in thread '0xb1b08740' with key '{679e561a-4086-4030-b176-0d3682e58bf0}'
    [QxOrm] execute sql query failed : SELECT oParam.IdObj AS oParam_IdObj_0, oParam.TypeParam AS oParam_TypeParam_0, oParam.Libelle AS oParam_Libelle_0, oParam.Abrege AS oParam_Abrege_0 FROM oParam WHERE TypeParam=1
    Unable to fetch row
    No query
    J'ai l'impression d'une incompatibilité entre mon BaseAgri.pro et QxOrm.pri car, lorsque:
    - je rajoute dans les headers "QxBase/include/BaseAgri_all_include.gen.h" et ../Libs/QxOrm/include/QxRegister/QxRegister.h"
    - je mets dans l'éditeur tous ces fichiers (codes),
    selon le sens dans lequel je tourne d'un code à l'autre, j'ai ou je n'ai pas les indications d'erreur ou warning
    dont j'ai déjà parlé (sur oparam.gen.h, Qx_register souligné en rouge, ...)

    Pourtant je ne détecte pas ce qui peut être incompatible dans BaseAgri.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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    include($$PWD/../Libs/QxOrm/QxOrm.pri)
     
    QT       += core gui sql
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = BaseAgri
    TEMPLATE = app
    #CONFIG += C++11
    CONFIG += precompile_header
    PRECOMPILED_HEADER = precompiled.h
     
    SOURCES += main.cpp\
        mainwindow.cpp \
        taccesdao.cpp \
        bureaudelegate.cpp
     
    HEADERS  += \
        mainwindow.h \
        taccesdao.h \
        bureaudelegate.h \
        QxBase/include/BaseAgri_all_include.gen.h \
        ../Libs/QxOrm/include/QxRegister/QxRegister.h
     
    FORMS    += \
        mainwindow.ui
     
    #LIBS += -L/home/cs/Bureau/AteliersLogiciels/Libs/QxOrm/lib -lQxOrmd -lboost_serialization
    LIBS += -lboost_serialization
     
    LIBS += -L$$PWD/../Libs/QxOrm/lib/ -lQxOrmd
    LIBS += -L$$PWD/QxBase/bin/  -lBaseAgrid
    LIBS += -L$$PWD/QxModel/bin/ -lBaseAgriModeld
     
    INCLUDEPATH += $$PWD/../Libs/QxOrm/include
    #DEPENDPATH += $$PWD/../Libs/QxOrm/include
     
    INCLUDEPATH += $$PWD/QxBase/include
    #DEPENDPATH += $$PWD/QxBase/include
     
    INCLUDEPATH += $$PWD/QxModel/include
    #DEPENDPATH += $$PWD/QxModel/include
     
    #INCLUDEPATH += ./../Libs/QxOrm/include/
     
    OTHER_FILES += \
        Erreurs.txt \
        Messages.txt
    et QxOrm.pri:
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    ############################
    # Qt GUI module dependency #
    ############################
     
    # To remove QtGui dependency, uncomment the following line :
    # CONFIG += QX_NO_QT_GUI
     
    CONFIG(QX_NO_QT_GUI) { QT -= gui }
    else {
    DEFINES += _QX_QT_GUI_DEPENDENCY
    greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets }
    } # CONFIG(QX_NO_QT_GUI)
     
    ###############################
    # boost Library Configuration #
    ###############################
     
    # In this section, it's necessary to specify boost directories (lib + include) and boost serialization module name (debug + release) :
    #  - QX_BOOST_INCLUDE_PATH : your boost include path
    #  - QX_BOOST_LIB_PATH : your boost lib path
    #  - QX_BOOST_LIB_SERIALIZATION_DEBUG : your boost serialization module name in debug mode
    #  - QX_BOOST_LIB_SERIALIZATION_RELEASE : your boost serialization module name in release mode
    #  - QX_BOOST_LIB_WIDE_SERIALIZATION_DEBUG : your boost wide serialization module name in debug mode (default is empty)
    #  - QX_BOOST_LIB_WIDE_SERIALIZATION_RELEASE : your boost wide serialization module name in release mode (default is empty)
     
    isEmpty(QX_BOOST_INCLUDE_PATH) { QX_BOOST_INCLUDE_PATH = $$quote($$(BOOST_INCLUDE)) }
    isEmpty(QX_BOOST_LIB_PATH) { QX_BOOST_LIB_PATH = $$quote($$(BOOST_LIB)) }
    isEmpty(QX_BOOST_LIB_SERIALIZATION_DEBUG) { QX_BOOST_LIB_SERIALIZATION_DEBUG = "$$(BOOST_LIB_SERIALIZATION_DEBUG)" }
    isEmpty(QX_BOOST_LIB_SERIALIZATION_RELEASE) { QX_BOOST_LIB_SERIALIZATION_RELEASE = "$$(BOOST_LIB_SERIALIZATION_RELEASE)" }
    # isEmpty(QX_BOOST_LIB_WIDE_SERIALIZATION_DEBUG) { QX_BOOST_LIB_WIDE_SERIALIZATION_DEBUG = "$$(BOOST_LIB_WIDE_SERIALIZATION_DEBUG)" }
    # isEmpty(QX_BOOST_LIB_WIDE_SERIALIZATION_RELEASE) { QX_BOOST_LIB_WIDE_SERIALIZATION_RELEASE = "$$(BOOST_LIB_WIDE_SERIALIZATION_RELEASE)" }
     
    ##############################
    # QxOrm Library Static Build #
    ##############################
     
    # To create only 1 EXE including Qt, boost serialization and QxOrm libraries without any dependency :
    #   1- be sure to build Qt and boost::serialization using static mode
    #   2- in "./QxOrm.pri" file, add the following line : "DEFINES += _QX_STATIC_BUILD"
    #   3- BUT PLEASE : in your program, add a "readme.txt" file and a "about my program..." window to indicate that your application is based on Qt, boost and QxOrm libraries !
    # Note : on Windows, static mode works with only 1 EXE, it will never work mixing DLL and EXE (because of singleton implementation of boost::serialization and QxOrm libraries)
     
    # DEFINES += _QX_STATIC_BUILD
     
    ######################################
    # QxOrm Library Serialization Engine #
    ######################################
     
    # In this section, you can enable/disable different serialization engine, by default, there is :
    #  - _QX_SERIALIZE_BINARY_ENABLED
    #  - _QX_SERIALIZE_XML_ENABLED
     
    DEFINES += _QX_SERIALIZE_BINARY_ENABLED
    DEFINES += _QX_SERIALIZE_XML_ENABLED
     
    # DEFINES += _QX_SERIALIZE_POLYMORPHIC_ENABLED
    # DEFINES += _QX_SERIALIZE_TEXT_ENABLED
    # DEFINES += _QX_SERIALIZE_PORTABLE_BINARY_ENABLED
    # DEFINES += _QX_SERIALIZE_WIDE_BINARY_ENABLED
    # DEFINES += _QX_SERIALIZE_WIDE_TEXT_ENABLED
    # DEFINES += _QX_SERIALIZE_WIDE_XML_ENABLED
     
    ######################
    # Globals Parameters #
    ######################
     
    CONFIG += debug_and_release
    CONFIG += precompile_header
    DEPENDPATH += .
    INCLUDEPATH += ./include
    INCLUDEPATH += $${QX_BOOST_INCLUDE_PATH}
    QT += network
    QT += xml
    QT += sql
    MOC_DIR = ./qt/moc
    RCC_DIR = ./qt/rcc/src
    UI_DIR = ./qt/ui
    UI_HEADERS_DIR = ./qt/ui/include
    UI_SOURCES_DIR = ./qt/ui/src
     
    CONFIG(debug, debug|release) {
    DEFINES += _QX_MODE_DEBUG
    } else {
    DEFINES += _QX_MODE_RELEASE
    } # CONFIG(debug, debug|release)
     
    #############################
    # Compiler / Linker Options #
    #############################
     
    win32 {
    CONFIG(debug, debug|release) {
    } else {
    DEFINES += NDEBUG
    win32-msvc2005: QMAKE_LFLAGS += /OPT:NOREF
    win32-msvc2008: QMAKE_LFLAGS += /OPT:NOREF
    win32-msvc2010: QMAKE_LFLAGS += /OPT:NOREF
    } # CONFIG(debug, debug|release)
    win32-g++: QMAKE_LFLAGS += -Wl,-export-all-symbols -Wl,-enable-auto-import
    } # win32
     
    #######################
    # Externals Libraries #
    #######################
     
    LIBS += -L$${QX_BOOST_LIB_PATH}
     
    CONFIG(debug, debug|release) {
    LIBS += -l$${QX_BOOST_LIB_SERIALIZATION_DEBUG}
    !isEmpty(QX_BOOST_LIB_WIDE_SERIALIZATION_DEBUG) { LIBS += -l$${QX_BOOST_LIB_WIDE_SERIALIZATION_DEBUG} }
    } else {
    LIBS += -l$${QX_BOOST_LIB_SERIALIZATION_RELEASE}
    !isEmpty(QX_BOOST_LIB_WIDE_SERIALIZATION_RELEASE) { LIBS += -l$${QX_BOOST_LIB_WIDE_SERIALIZATION_RELEASE} }
    } # CONFIG(debug, debug|release)
    ... sauf que bien des choses sont définies plusieurs fois (je suppose que ce sont des "sécurités" de QXOrm.pri) ...

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unable to fetch row    ....    No query
    C'est le driver QSQLite de Qt qui remonte cette erreur : c'est un peu le problème avec ce driver, l'erreur n'est pas très explicite.
    Une recherche sur Google montre plusieurs cas avec cette erreur.
    On dirait que c'est la connexion à la BDD qui pose problème, mais je ne sais pas pourquoi.
    Comment initialises-tu tes paramètres de connexion ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    can't find linker symbol for virtual table for `qx::IxModel' value
    found `typeinfo for BureauDelegate' instead
    Je n'ai jamais vu ce type de message, à mon avis c'est un problème, il faudrait que tu creuses pour savoir pourquoi tu as ça.

    Concernant ton fichier BaseAgri.pro :
    - tu ne gères pas mode debug et release : attention à ça.
    - la ligne "LIBS += -lboost_serialization" est fausse et même dangereuse car pour le moment tu sembles travailler en mode debug, et là tu utilises un composant en mode release : c'est géré par QxOrm.pri donc efface cette ligne.
    - supprime également "../Libs/QxOrm/include/QxRegister/QxRegister.h" ==> ça n'a rien à faire dans ton projet !
    - supprime également : QxBase/include/BaseAgri_all_include.gen.h ==> tu peux l'inclure dans un .cpp ou dans le precompiled.h, mais ça n'a rien à faire dans le .pro.

    ... sauf que bien des choses sont définies plusieurs fois (je suppose que ce sont des "sécurités" de QXOrm.pri) ...
    Non, il y a des conditions pour gérer toutes les environnements Windows, Linux et MacOSX.
    Mais je ne pense pas qu'il y a des paramètres définis plusieurs fois.

    je ne peux pas entrer dans qxFetchByQuery et je ne peux que récupérer le retour
    Dans Qt Creator, il faut ajouter tous les projets : QxOrm, les projets générés par QxEntityEditor et ton projet.
    Normalement avec tout ça, si tout est bien linké l'un à l'autre, tu devrais pouvoir rentrer dans les fonctions en mode debug.
    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.

Discussions similaires

  1. Visibilité des variables dans le code généré par le GUIDE
    Par salseropom dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 09/10/2007, 08h50
  2. [DOM] Code généré par javascript inaccessible
    Par Bowen dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/06/2007, 11h29
  3. [Blend beta 1][VS Extension WPF CTP 11/06] VS ne lit pas le code généré par Blend
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/12/2006, 17h50
  4. Code généré par JSF
    Par vny dans le forum JSF
    Réponses: 3
    Dernier message: 24/10/2006, 10h50
  5. Lancer la GUI à partir de code généré par VE
    Par Cedric507 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 19/09/2006, 11h23

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