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 :

Crash pendant la compilation de la bibliothèque QxOrm avec MinGW sous Windows


Sujet :

QxOrm

  1. #1
    Expert confirmé

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut Crash pendant la compilation de la bibliothèque QxOrm avec MinGW sous Windows
    Bonjour,

    Pour ceux qui ont des soucis pour compiler QxOrm avec MinGW sous Windows (crash du process cc1plus.exe) : les versions récentes de MinGW (4.8+) ont un bug connu avec les en-têtes précompilés de taille importante (large precompiled header).
    Plus d'infos sur ce bug ici : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56926
    Et ici : http://stackoverflow.com/questions/1...ed-header-file

    Les packages actuels de Qt (Qt 5.3 et Qt 4.8.6) sont livrés avec MinGW 4.8.2, version qui contient ce bug avec les en-têtes précompilés !
    Pour ceux qui ne peuvent pas changer de compilateur (MSVC++ ou bien MinGW 4.7 par exemple), vous pouvez télécharger la version BETA de QxOrm 1.3.1 : http://www.qxorm.com/version/QxOrm_1.3.1_BETA_06.zip

    Cette version BETA supporte une nouvelle option de compilation : _QX_NO_PRECOMPILED_HEADER
    Pour activer cette option, ouvrir le fichier de configuration QxOrm.pri, puis dé-commenter la ligne suivante (fin du fichier) :
    DEFINES += _QX_NO_PRECOMPILED_HEADER

    Cette option désactive automatiquement les en-têtes précompilés, et QxOrm fonctionne ainsi correctement avec MinGW 4.8.2.
    Attention, les temps de compilation seront certainement plus longs avec cette option activée !

    Remarque : ce problème apparaît uniquement sous Windows (MinGW 4.8+), il n'y a aucun soucis sous Linux ou bien Mac OS X.

    EDIT : voici une version BETA de QxEntityEditor (1.1.7 BETA 03) qui supporte la nouvelle option de compilation _QX_NO_PRECOMPILED_HEADER :
    http://www.qxorm.com/version/QxEntit...03_win_32b.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.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Etudiant EPITECH 5e année
    Inscrit en
    Octobre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Etudiant EPITECH 5e année

    Informations forums :
    Inscription : Octobre 2014
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Bonjour.

    Je suis en charge dans un soucis de simplicité de faire compiler notre projet sous mingw. J'ai réussi à compiler la librairie ainsi que le core du projet QxOrm, les services et les modèles générés via QxEntityEditor. En revanche, lorsque je compile le projet qui utilise QxOrm (une application serveur dans le cas présent), j'ai des erreurs d'export introuvable :

    C:\Users\VM1\Documents\LIMA\Cores\limaCore\include\Session.gen.h:11: erreur : variable 'LIMACORE_EXPORT Session' has initializer but incomplete type
    class LIMACORE_EXPORT Session
    Sauriez vous comment régler le problème sans avoir à rajouter l'include de precompiled.h dans chaque fichier générés ?

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut
    dans un soucis de simplicité
    Honnêtement, sous Windows, je recommande d'utiliser MSVC++.
    Mais bon, rien ne t'empêche d'utiliser MinGW si tu le souhaites...

    J'ai réussi à compiler la librairie ainsi que le core du projet QxOrm, les services et les modèles générés via QxEntityEditor.
    Sauriez vous comment régler le problème sans avoir à rajouter l'include de precompiled.h dans chaque fichier générés ?
    D'après ce que je comprends :
    - compilation de QxOrm + tout le code généré par QxEntityEditor => OK
    - compilation de ton projet qui dépend de QxOrm et le code généré => KO, c'est bien ça ?

    Il ne faut surtout pas inclure precompiled.h dans les fichiers d'en-tête (headers), ce n'est pas fait pour ça !

    Dans ton projet, il faut certainement que tu fasses un precompiled header propre à ton projet.
    Et définir dedans la variable LIMACORE_EXPORT, ou bien inclure la définition de cette variable qui doit être présente dans un des fichiers d'export générés par QxEntityEditor.
    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.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Etudiant EPITECH 5e année
    Inscrit en
    Octobre 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Etudiant EPITECH 5e année

    Informations forums :
    Inscription : Octobre 2014
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Honnêtement, sous Windows, je recommande d'utiliser MSVC++.
    Eh bien le problème c'est de devoir installer Visual Studio en fait

    D'après ce que je comprends :
    - compilation de QxOrm + tout le code généré par QxEntityEditor => OK
    - compilation de ton projet qui dépend de QxOrm et le code généré => KO, c'est bien ça ?

    Il ne faut surtout pas inclure precompiled.h dans les fichiers d'en-tête (headers), ce n'est pas fait pour ça !

    Dans ton projet, il faut certainement que tu fasses un precompiled header propre à ton projet.
    Et définir dedans la variable LIMACORE_EXPORT, ou bien inclure la définition de cette variable qui doit être présente dans un des fichiers d'export générés par QxEntityEditor.
    C'est bien ça.
    Le problème est que j'ai du désactiver les headers précompilés via _QX_NO_PRECOMPILED_HEADER pour éviter le crash lors de la compilation. Option que je prend également en compte dans mon .pro pour ne pas inclure de headers précompilés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    !contains(DEFINES, _QX_NO_PRECOMPILED_HEADER) {
    PRECOMPILED_HEADER = ./precompiled.h
    }
    Du coup, je me retrouve avec des erreurs dans les fichiers générés, car il ne connait plus LIMACORE_EXPORT notamment. Pour contourner ce problème, j'ai rajouté ceci dans un fichier généré pour que cela puisse compiler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <QxOrm.h>
    #include "LimaCore_export.gen.h"
    Connaîtrais tu une solution alternative que de toucher au fichier générés ?

    EDIT : Le problème est résolu en faisant mes includes de qxorm et du fichier d'export avant d'inclure le fichier généré qui posait problème. Merci !

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 481
    Points : 4 238
    Points
    4 238
    Par défaut
    Le problème est résolu en faisant mes includes de qxorm et du fichier d'export avant d'inclure le fichier généré qui posait problème. Merci !
    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.

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

Discussions similaires

  1. compiler avec gcc sous windows
    Par haydens dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 06/07/2009, 14h11
  2. Compiler une application utilisant GTK+ avec MinGW
    Par lilivounet dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 19/06/2009, 14h42
  3. Problème de compilation avec GSOAP sous Windows
    Par qiqi1111 dans le forum C++
    Réponses: 1
    Dernier message: 17/03/2009, 11h48
  4. [Compilation] Compilation avec Mingw sous Vista
    Par redfric dans le forum Débuter
    Réponses: 1
    Dernier message: 23/01/2008, 16h15
  5. [Cal3D] Problème de compilation avec Cal3D sous windows
    Par nicoenz dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 15/11/2006, 09h46

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