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 :

[DEBUTANT][afxwin.h]Error de compilation /MD[d]


Sujet :

MFC

  1. #1
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut [DEBUTANT][afxwin.h]Error de compilation /MD[d]
    J'ai le message de afx.h qui me dit qu il faut que je definisse ("#define _AFXDLL") ou ne pas utiliser /MD[d] pour compiler

    Probleme :
    j'utilise /MD ou /MTd
    j ai ajoute "utiliser les MFC dans une DLL partagée"


    Quelqu un a t il une idée de l origine du probleme et comment reussir à compiler ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Salut,

    Dans les settings de ton projet essaye de rajouter:
    _AFXDLL

    Settings:
    explorateur sur projet->click droit->properties->C->Preprocessor (de memoire mais ca doit etre ca).

  3. #3
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Merci mais malheureusement
    Même joueur joue encore

    Tu as bien localisé le panneau de configuration pour le pre processor et j ai ajouté _AFXDLL mais toujours la même erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Erreur 6 fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h 24
    Je sais pas si c est lié j ai aussi l erreur suivant alors que j ai supprmié ous le window.h de mon projet

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur 7 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

  4. #4
    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
    salut,
    apparemment tu as mis le bizarre dans ton projet...
    1) on ne change pas les options de compilations comme ça:
    on indique dans l'onglet général (sous vc6.0) le mode de fonctionnement des MFC.
    en bibliothèques partagées ou statiques.
    2) un projet MFC ne doit pas inclure Windows.h c'est fait par <afxwin.h>.
    et c'est pré généré par l'assistant dans stdafx.h.

    donc soit tu n'as pas généré un projet MFC avec l'assistant (qui se charge de tout) au départ, sois tu as mis le bizarre dedans en touchant un peu a tout...

  5. #5
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Je n 'ai fait que suivre les indications du compilateur de VS 2005.
    des que je supprime ces references a afx tous refonctionnent tres bien.

    Voici le contexte j ai importe dans Visual Studio 2005 un projet de Visual C++ 6.0. tres gros et tres ancien fin des années 90.
    Après quelque changement dans le code j'ai reussi à le faire compiler et même à en changer quelques fonctionnalités.
    Après j'ai du voulu manipuler l interface graphique. En l'occurence accéder a un CButton pour ne changer le contenu text dynamiquement.
    Suivant la doc j ai ajoute
    #include "afxwin.h"
    et j ai remplace tous les windows.h du projet par celle la.

    Depuis j ai les 2 erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur    6    fatal error C1189: #error :  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]    c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h    24

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur    7    fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>    c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxv_w32.h    16
    Pourtant
    je compile en utilisant /MT
    J ai change pour inclure "Utiliser les MFC dans une DLL partagée"
    et dans la pre processeur j ai ajoute _AFXDLL

  6. #6
    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
    hébé !
    ce projet utilisait l'entête pre compilé stdafx.h ?
    si oui le seul include <afxwin.h> présent dans le projet doit être dans stdafx.h
    windows.h est a virer de partout.
    Après j'ai du voulu manipuler l interface graphique. En l'occurrence accéder a un CButton pour ne changer le contenu text dynamiquement.
    Suivant la doc j ai ajoute
    #include "afxwin.h"
    c'est une erreur tu n'as rien a rajouter pour manipuler les ressources si ce que j'ai dis précédemment est correcte...
    et surtout pas de #include "afxwin.h" dans un .cpp comme ça ...
    si tu passes de vc6 a 2500 tu peux aussi consulter mon tuto sur ce sujet:
    http://farscape.developpez.com/tutor...on-vc6-vc2005/


  7. #7
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    En tous cas merci beaucoup pour tes eclaircissements qui illumine ma journée (tres sincerement j'ai passe 6 ou 7 heures hier sur le sujet à etudier des doc C++ et poste et chercher de l'aide )

    j ai bien supprimer tous les windows.h dans les headers et dans les cpp dont j ai la source dans ce projet

    Pour le CButton j ai suivie la doc du MSDN

    http://msdn2.microsoft.com/en-us/lib...6c(VS.71).aspx

    Je te remcercie pour ton tuto je l'ai trouvé il y a 2 semaines lorsque j'ai migré ce projet vers Visual 2005.

    Donc si jai bien compris il semble que mon erreur soit l inclusion dans les headers
    de afxwin.h.
    Je vais donc le remplacer par stdafx.h de ce pas.
    Le resultat sera posté tres rapidement

  8. #8
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    J ai partiellement regle mon probleme generale et je pense que j'ai completement reglé le probleme de compilation.
    Je vais donc mettre "resolu"
    Pour conclure
    J ai suivi les conseils farscape.
    Je suis allee creer un projet MFC bidon pour voir comment etait configure la compilation et quelle classe etait crée.
    Donc un fois crée par le wizard stdafx.h je l ai ajouté a mon projet à la place des afxwin.h comme sieur farscape me l'avait indique (entre temps j ai eu un warning de linkage (avec LIBCMTD ca m a fait lire Lire un peu de doc pour comment ignorer un lib au linkage plutot facile pour une fois ).

    Suite a tous ça j'ai encore des problemes pendant le runtime mais je suis en train de delayer pour le moment.

    Mille Merci farscape


    Ajout :
    j ai l appel de winsock.h apres stdafx.h

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

Discussions similaires

  1. runtime error ou compilation
    Par amazircool dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2008, 07h05
  2. [MySQL 4.1.12][Debutant] Select syntax error
    Par Cian dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/01/2007, 18h29
  3. [debutant][C++][9]erreur à la compilation
    Par cladsam dans le forum DirectX
    Réponses: 9
    Dernier message: 03/10/2006, 12h05
  4. [Debutant] probleme lors de la compilation
    Par boobi dans le forum Débuter
    Réponses: 5
    Dernier message: 26/08/2005, 15h57
  5. [MFC] Error de compilation
    Par jagboys dans le forum MFC
    Réponses: 3
    Dernier message: 08/02/2005, 13h18

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