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 :

[Migration VC6 -> VC8] Ambigüité avec MSXML


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 40
    Points : 26
    Points
    26
    Par défaut [Migration VC6 -> VC8] Ambigüité avec MSXML
    Bonjour à tous,

    Je réalise une migration d'un gros projet développé sous VC6 vers VC8 (Visual 2005). Je recontre un problème que je ne sais pas résoudre.

    J'ai une classe qui parse des documents XML en utilsant l'API MSXML.
    En l'occurence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #import "MSXML4.dll"
    Je fais bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace MSXML2;
    et malgré ça quand je définit un attibut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public:
       IXMLDOMElementPtr  mpo_Racine;
    J'ai cette erreur à la compilation :
    error C2872: 'IXMLDOMElementPtr' : symbole ambigu
    est peut-être 'c:\program files\microsoft visual studio 8\vc\include\comdefsp.h(1239) : _com_ptr_t<_IIID> IXMLDOMElementPtr'
    with
    [
    _IIID=_com_IIID<IXMLDOMElement,& _GUID_2933bf86_7b36_11d2_b20e_00c04f983e60>
    ]
    ou 'd:\projetsvs2005\pcw\pcwexe\cfg - serveur configuration\debug\msxml4.tlh(292) : MSXML2::IXMLDOMElementPtr'
    Je ne comprend pas il ne devrait pas y avoir d'ambigüité vu que je définit bien le namespace comme étant MSXML2

    Le probleme est résolu si j'ecrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public:
      MSXML2::IXMLDOMElementPtr  mpo_Racine;
    Mais j'ai beaucoup beaucoup beaucoup d'attribut comme ça et j'imagine qu'il doit y avoir une vraie solution à ce problème ... pas de la bricole comme ça.

    Merci bien de votre aide

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Citation Envoyé par JoSii
    Je ne comprend pas il ne devrait pas y avoir d'ambigüité vu que je définit bien le namespace comme étant MSXML2
    Ce n'est pas comme ça que ça marche.

    Le using namespace importe toutes les classes du namespace en question, mais ne "définit" pas "le namespace comme étant MSXML2"...
    Le conflit a lieu entre deux classes toutes deux parfaitement accessibles : IXMLDOMElementPtr (typedef défini dans comdefsp.h, namespace global) et MSXML2::IXMLDOMElementPtr (namespace MSXML2).

    Je crois bien que ta solution est LA solution officielle...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Merci pour cet éclairement.
    Tu es sûr qu'il n'existe pas de moyen pour résoudre cette ambigüité sans avoir à placer MSXML2:: devant chaque fonctions et type ambigüe ?

    Y'a du boulot en perspective...

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 100
    Points : 77
    Points
    77
    Par défaut
    Il te reste toujours la fonction rechercher/remplacer tres pratique dans des cas comme celui la


    remplacer IXMLDOMElementPtr par MSXML2::IXMLDOMElementPtr


Discussions similaires

  1. migration VC6.0 VC2008 problème msxml
    Par Milirf dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/08/2009, 15h06
  2. probleme migration VC6->VC2005 avec MFC
    Par skalimer0 dans le forum Visual C++
    Réponses: 22
    Dernier message: 05/12/2006, 18h16
  3. Réponses: 7
    Dernier message: 11/07/2006, 09h31
  4. Réponses: 14
    Dernier message: 03/07/2006, 16h55
  5. problème avec msxml / windows server 2000
    Par emploidottv dans le forum ASP
    Réponses: 2
    Dernier message: 26/03/2006, 14h33

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