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

Visual C++ Discussion :

Fatal error C1189: WINDOWS.H already included


Sujet :

Visual C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Fatal error C1189: WINDOWS.H already included
    Bonjour à tous,

    Je suis en présence d'une erreur récurrente que je n'ai pas réussie à résoudre.

    Pour situer le contexte: je dois développer un web service en utilisant une l'API C++ d'une application.

    Pour cela, sous Visual Studio 2005, j'ai créé un projet "ATL Server Web Service". Pour avoir accès aux fonctionnalités de l'API, j'importe trois fichiers headers dans mon projet. Ces fichiers font référence à un autre header, "afxtempl.h". Comme stipulé dans le header "stdafx.h" créé avec le projet, je suis sommé de placer toute référence de ce type dans le dit fichier. J'ai donc enlevé les références à "afxtempl.h" des headers fournis par l'API, pour les placer dans "stdafx.h".

    Voici donc la structure de mon fichier "stdafx.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    // stdafx.h : include file for standard system include files,
    // or project specific include files that are used frequently, but
    // are changed infrequently
    //
    
    #pragma once
    
    #define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
    
    #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS	// some CString constructors will be explicit
    
    // critical error descriptions will only be shown to the user
    // in debug builds. they will always be logged to the event log
    #ifndef _DEBUG
    #define ATL_CRITICAL_ISAPI_ERROR_LOGONLY
    #endif
    
    #define _ATL_APARTMENT_THREADED
    
    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0403
    #endif
    
    // TODO: this disables support for registering COM objects
    // exported by this project since the project contains no
    // COM objects or typelib. If you wish to export COM objects
    // from this project, add a typelib and remove this line
    #define _ATL_NO_COM_SUPPORT
    
    #include "resource.h"
    #include <atlsrvres.h>
    #include <atlisapi.h>
    #include <atlstencil.h>
    #include <atlsoap.h>
    
    
    // Additional references
    #include <afxtempl.h>
    J'obtiens l'erreur suivante lors de la compilation:

    Error 1 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    Si je commente "#include <afxtempl.h>" l'erreur disparaît (mais l'API ne peut plus fonctionner).

    J'ai largement cherché une solution au problème sur Internet, je ne vois pas d'où cela peut venir. C'est sûrement quelque chose que je fais mal, mais impossible de savoir quoi. Aussi, toute aide me serait très précieuse pour que j'avance enfin sur mon projet...

    Merci d'avance

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    Citation Envoyé par arnolefou Voir le message
    Comme stipulé dans le header "stdafx.h" créé avec le projet, je suis sommé de placer toute référence de ce type dans le dit fichier.
    Renseigne toi sur la nécessité de ceci avant d'obéir. En quoi est ce lié à la compilation ? Au déploiement ?

    Citation Envoyé par arnolefou Voir le message
    Comme stipulé dans le header "stdafx.h" créé avec le projet, je suis sommé de placer toute référence de ce type dans le dit fichier.
    Et non. Tu modifies les headers de l'API là. C'est louche comme manip. Les barrières anti-inclusion devraient faire le travail à ta place. Essaye en laissant l'API tranquille et en laissant aussi l'include dans stdafx.h.
    Find me on github

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Renseigne toi sur la nécessité de ceci avant d'obéir. En quoi est ce lié à la compilation ? Au déploiement ?
    La nécessité vient du TODO original... Enfin, je pense?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "resource.h"
    #include <atlsrvres.h>
    #include <atlisapi.h>
    #include <atlstencil.h>
    #include <atlsoap.h>
    
    
    // TODO: reference additional headers your program requires here
    Quant au reste de tes questions, eh bien, je ne sais pas quelle différence cela fait.

    Citation Envoyé par jblecanard Voir le message
    Et non. Tu modifies les headers de l'API là. C'est louche comme manip. Les barrières anti-inclusion devraient faire le travail à ta place. Essaye en laissant l'API tranquille et en laissant aussi l'include dans stdafx.h.
    Oui c'est un peu brutal. Mais disons aussi que, si à aucun moment je n'inclue aucun des headers de l'API (donc, que je ne pointe pas dessus), et que j'inclue quand même quelque part "afxtempl.h", l'erreur retournée est la même. C'est donc lié, a priori, à un conflit entre ce header et quelque chose de déjà déclaré ou initialisé. Non?

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par arnolefou Voir le message
    C'est donc lié, a priori, à un conflit entre ce header et quelque chose de déjà déclaré ou initialisé. Non?
    On dirait bien oui. Y a-t-il bien une barrière anti-inclusion dans afxtempl.h ? Es-tu censé modifier ce fichier ou non ?
    Find me on github

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Non, je ne pense pas, c'est une librairie Microsoft, enfin qui fait partie de la lignée des afx____.h.
    En tous cas j'ai beau débroussailler dans tous les sens et retourner le problème, à grands coups de googling, je peine beaucoup à avancer.

    Peut-être faut-il que je change mon contexte de développement?

    En fait, disons que la nécessité que j'ai, c'est d'utiliser les fonctionnalités de l'API (qui sont à la base faites pour développer une "console" propre, enfin une application desktop quoi), pour créer un/des Web Service(s) (afin de pouvoir utiliser les fonctionnalités dans une grosse plate-forme documentaire).

    Le seul pré-requis, c'est d'avoir un support des MFC puisque l'API se base dessus. Bref, je ne sais pas si le type de projet que j'ai créé (et qui ne marche pas) correspond bien à mon besoin (sous Visual Studio 2005, type de projet "ATL Server Web Service').

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Re

    je t'avouerai en toute honnêteté que je n'en sais rien, je ne suis pas du tout spécialiste des web services, et encore moins sur plateforme microsoft. J'espère que quelqu'un de plus compétent pourra t'aider
    Find me on github

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Sans aucun problème Je continue de chercher. Je continue de surveiller d'éventuelles réponses ici, sinon, j'essaierai de reformuler ma requête ("comment faire" plutôt que "comment débloquer le problème" sera peut-être plus judicieux...).

    De toute manière, merci pour ton attention.

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/06/2009, 11h24
  2. fatal error C1083: Impossible d'ouvrir le fichier include : stdio.h
    Par math26 dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 03/12/2007, 23h50
  3. Réponses: 7
    Dernier message: 20/01/2007, 19h00
  4. fatal error C1189: #error : WINDOWS.H already included.
    Par Moustico dans le forum Windows
    Réponses: 1
    Dernier message: 04/07/2006, 18h22
  5. error C1189 et windows.h
    Par hitchie dans le forum MFC
    Réponses: 6
    Dernier message: 30/09/2005, 13h41

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