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

MFC Discussion :

[Qt][VC++6.0][QT] Portage de MFC vers QT3.3.3., erreur de compilation C2146 et C1004


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut [Qt][VC++6.0][QT] Portage de MFC vers QT3.3.3., erreur de compilation C2146 et C1004
    Bonjour à toutes et à tous,

    J'ai récupéré les codes sources d'une classe utilisée dans une application basée sur les MFC et je souhaite utiliser cette même classe dans une applciation basée sur QT.

    Après analyse du code de la classe je constate qu'à priori il n'y a que peu d'éléments spécifiques aux MFC : quelques envois de messages. Je commence par mettre en commentaire les lignes faisant références aux éléments spécifiques MFC puis je commence à intégrer la classe et autres fichiers nécessaires :
    * un .h contenant des constantes
    * un .lib et un .dll

    J'ajoute le .h et .cpp de ma classe dans mon projet, ainsi que le .h contenant les constantes. Je dis au compilateur de lier avec le .lib et je lance la compilation, mais voila là, ça ne passe pas et j'ai les erreurs suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MaClasse.cpp
    c:\qt\constantes.h(666) : error C2146: syntax error : missing ';' before identifier 'toto'
    c:\qt\constantes.h(666) : fatal error C1004: unexpected end of file found
    Je précise que MaClasse.cpp est le fichier .cpp de la classe que je souhaite porter, et que constantes.h est le nom du fichier, inclus dans MaClasse.h et qui contient les valeurs des constantes.

    Je précise aussi que lorsque je compilais le projet basée sur MFC je n'avais aucune erreur mais quand je compile le projet basé sur QT j'ai cette erreur.

    Qu'est ce que je dois faire ? J'ai regardé au préalable sur le site de Microsoft mais aucune des sources ne me paraît justifiée (j'ai aussi supprimé l'utilisation des headers précompilés), et je n'ai mis que quelques lignes des fichiers MaClasse en commentaires (uniquement les appels des fonctions postMessage).

    D'avance merci pour votre aide.

    En vous souhaitant une bonne journée.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ce n'est pas un probleme d'entete precompilé ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Par défaut
    En fait je viens de regarder d'avantage l'aide sur le site MSDN, il y était dit que l'erreur C2146 pouvait être précédée de l'erreur C2065 ... ce n'est pas le cas pour moi mais j'ai tout de même regardé de quoi il était question. La partie intéressante était la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Make sure you are including any necessary header files if you have defined VC_EXTRALEAN, WIN32_LEAN_AND_MEAN, or WIN32_EXTRA_LEAN. Defining these symbols excludes some functionality (certain header files are excluded) from windows.h and afxv_w32.h (for MFC applications) to speed compiles. Search windows.h and afxv_w32.h for these symbols for the most up-to-date description of what is excluded
    J'ai donc ajouté dans MaClasse.h la ligne :
    juste avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "constantes.h"
    et le problème est maintenant résolu.

    Désolé pour ce poste, si j'avais pris un peu plus de temps au préalable je n'aurai pas eu besoin de le poster.

    On peu quand même tirer une morale de tout ça, il faut toujours prendre le temps de réfléchir avant de coder car on ne gagne jamais à faire les choses à la va vite.

    ++

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 14/10/2005, 11h01
  2. Réponses: 1
    Dernier message: 13/07/2005, 15h51
  3. Réponses: 4
    Dernier message: 07/07/2005, 13h03
  4. Portage requete Access vers SQL Server (Iif)...
    Par cmousset dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/06/2005, 16h38
  5. [Kylix] Portage d'application Delphi vers Kylix
    Par BONNEFOI Patrick dans le forum EDI
    Réponses: 4
    Dernier message: 03/05/2005, 22h35

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