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 :

Problème changement de version de VS [FAQ]


Sujet :

Visual C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut Problème changement de version de VS
    Bonjour,

    développant jusqu'à présent sous Visual C++ 6.0, j'ai du passer à Visual Studio 2005 pas plus tard qu'aujourd'hui.

    J'ai donc repris mon projet, qui fonctionnait sous VC++ 6, et l'ai "migré" vers Visual Studio 2005, mais là, problème :

    J'utilise le parseur XML xerces-c ; j'ai mis les bons includes et copié les dll dans le dossier du projet. A la première compilation, j'ai, sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DOMDocument *doc = parser->getDocument();
    l'erreur suivante :

    D:\...\... truc.cpp(222) : error C2872: 'DOMDocument' : ambiguous symbol
    could be 'c:\program files\microsoft visual studio 8\vc\platformsdk\include\msxml.h(161) : DOMDocument'
    or 'z:\...\xerces-c\2.7.0\include\xercesc\dom\domdocument.hpp(63) : xercesc_2_7:OMDocument'
    Hop, je change donc ladite ligne en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xercesc_2_7::DOMDocument *doc = parser->getDocument();
    Mais là, je me retrouve avec une flambée (31 au total) d'erreurs :

    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
    EPLlicense.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static wchar_t * __cdecl xercesc_2_7::XMLString::transcode(char const * const)" (__imp_?transcode@XMLString@xercesc_2_7@@SAPA_WQBD@Z) referenced in function __catch$?parseXMLlicense@EPLlicense@@QAEHPAD@Z$0
    EPLlicense.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static char * __cdecl xercesc_2_7::XMLString::transcode(wchar_t const * const)" (__imp_?transcode@XMLString@xercesc_2_7@@SAPADQB_W@Z) referenced in function __catch$?parseXMLlicense@EPLlicense@@QAEHPAD@Z$0
    EPLlicense.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: wchar_t const * __thiscall xercesc_2_7::XMLException::getMessage(void)const " (__imp_?getMessage@XMLException@xercesc_2_7@@QBEPB_WXZ) referenced in function __catch$?parseXMLlicense@EPLlicense@@QAEHPAD@Z$0
    EPLlicense.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall xercesc_2_7::AbstractDOMParser::docCharacters(wchar_t const * const,unsigned int,bool)" (?docCharacters@AbstractDOMParser@xercesc_2_7@@UAEXQB_WI_N@Z)
    EPLlicense.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall xercesc_2_7::AbstractDOMParser::docComment(wchar_t const * const)" (?docComment@AbstractDOMParser@xercesc_2_7@@UAEXQB_W@Z)

    et caetera...

    .\Debug/XML.exe : fatal error LNK1120: 31 unresolved externals
    Quelqu'un(e) aurait-il (elle) une idée ?

    Merci,

    magicpm7

  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
    salut,
    déjà s'assurer que la dll et le programme utilise la même option pour l'utilisation de la bibliothèque de runtime (CRT) /MD (dll) ou /MT (multi-thread statique)
    les deux doivent être en accord.
    autre point ,attention à l'éventuel mélange avec Unicode .
    si le programme est en Unicode la dll doit aussi être aussi produite dans ce mode.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    Bonjour,

    merci pour ta réponse... mais c'est un peu du Chinois pour moi !
    Peux-tu m'indiquer ce que je dois modifier dans Visual Studio pour faire ce dont tu parles ?

  4. #4
    Membre confirmé Avatar de GETah
    Inscrit en
    Décembre 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 77
    Par défaut
    Bonjour a tous,
    Citation Envoyé par farscape
    salut,
    déjà s'assurer que la dll et le programme utilise la même option pour l'utilisation de la bibliothèque de runtime (CRT) /MD (dll) ou /MT (multi-thread statique)
    les deux doivent être en accord.
    autre point ,attention à l'éventuel mélange avec Unicode .
    si le programme est en Unicode la dll doit aussi être aussi produite dans ce mode.
    J'ai eu le meme probleme moi aussi, j'utilise des dlls fournies par un editeur de logiciel, ces dll sont compilees avec VC++6.0 et puis quand je tente une migration vers VC2005 j'ai des erreurs qui n'ont aucun sens.
    J'ai chercher sur internet sur MSDN, il semble qu'il y'a eu des modifications entre VC6 et VC2005. Dois je donc demander a mon editeur de logiciel des dll compilees avec VC2005?

    Merci,

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    Bonjour,

    tout d'abord GETah, à chaque chose malheur est bon, puisque mon "deuxième type d'erreur" n'apparait plus depuis que j'ai changé non pas les dll, mais les libs utilisées par mon projet. Ta question m'a permis de trouver ce qui coinçait à ce niveau, donc je pense que tu peux demander à ton éditeur des dll / libs utilisables avec VS2005.

    Par contre, j'ai toujours mon premier problème, concernant nafxcwd.lib et libcmtd.lib :

    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)
    J'ai trouvé une solution sur l'aide de Microsoft, ici, mais elle n'est pas valable pour VS2005 (ça s'arrête au 2003). Si vous avez des idées je suis preneur.

  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
    salut,
    oui en bibliothèques statiques c'est une autre galère , tu peux t'en sortir avec le principe évoqué dans la note MSDN .
    j'ai eu le même probléme sous vc2005 voila ce que j'ai fais:
    dans les propriétés du projet , chapitre éditeur de liens.
    rubrique entrée ,zone : bibliothèque spécifique ignorée ,mettre :
    Nafxcwd.lib;Libcmtd.lib (pour le debug).

    dans la zone : dépendances supplémentaires mettre en dernier à la suite des autres bibliothèques utilisées : Nafxcwd.lib;Libcmtd.lib


    en fait on décale simplement l'ordre des liens ...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    Ca marche ! Mais sans les ";" entre les noms des libs... c'est rageant ; j'avais essayé comme ça hier et c'était la merde...

    Il fallait aussi changer la dll de xerces-c, mais pas de problème pour ça.

    Merci !

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

Discussions similaires

  1. [WD17] Problème changement de version ?
    Par Concept-Informatique dans le forum WinDev
    Réponses: 30
    Dernier message: 23/05/2012, 10h51
  2. [XL-2000] Problème liaison après changement de version
    Par RootsInternationnal dans le forum Excel
    Réponses: 1
    Dernier message: 19/08/2009, 09h04
  3. Problème de changement de version
    Par Invité dans le forum SDL
    Réponses: 3
    Dernier message: 12/12/2008, 22h42
  4. Réponses: 6
    Dernier message: 22/06/2007, 15h51
  5. problème d'état suite à changement de version
    Par moicats dans le forum Access
    Réponses: 4
    Dernier message: 11/04/2006, 16h16

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