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 :

Migration VC6 vs VC2008 - error LNK2005: déjà défini(e) dans mfc42d.lib


Sujet :

Visual C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Migration VC6 vs VC2008 - error LNK2005: déjà défini(e) dans mfc42d.lib
    Bonjour ,

    En phase de link, j'ai les erreurs suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Édition des liens en cours...
    atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CSize::CSize(void)" (??0CSize@@QAE@XZ) déjà défini(e) dans mfc42d.lib(MFC42D.DLL)
    J'ai effectivement récupéré les lib release et debug du vieux projet VC6.0 à la demande du compilateur, à savoir MFC42.lib,MFC42D.LIB, mfcs42.lib, mfcs42d.lib, Mfco42.lib, Mfco42d.lib

    Savez vous s'il ne faut plus utiliser ces libs, s'il existe une version plus récente, ce qui les remplace ?

    Merci pour votre aide

    GP

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Tu n'aurais pas par hasard une classe dans ton projet qui s'appellerait CSize ?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse Raymond, J'ai vérifié dans le volet d'affichage des classes et je n'ai pas de déclaration de CSize.
    Par contre j'ai trouvé un post sur internet en réponse à un problème de migration de VC6 vers VC7.1:

    The problem is that a MFC application written in Visual Studio 6 includes MFC4.2 and on .NET you include MFC7. So they are interfering because both export the same symbols. It is recommended to remove any reference (library files, mfc4.2 specific headers) and use MFC7 instead.
    Dans le cas présent, il s'agit de VC 2008. Une idée de la marche à suivre ?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tu as un truc qui référence MFC42, sans doute une lib statique. Trouve la lib en question, et recompile-la sous 2008 aussi.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Version MFC pour Visual C++ 2008 ?
    Bonjour,

    Ci dessous la traduction de quelques extraits choisis.

    Liste des différentes versions livrées avec Visual C++
    [...]
    MFC version 4.21 (still mfc42.dll) Visual C++ version 5.0
    MFC version 6.0 (still mfc42.dll) Visual C++ version 6.0
    MFC version 7.0 (mfc70.dll) Visual C++ .NET 2002
    MFC version 7.1 (mfc71.dll) Visual C++ .NET 2003
    Les DLL ATL et MFC livrées avec Visual C++ .NET 2003 ont été renommées respectivement ATL71.dll et MFC71.dll.
    Les classes Visual C++ ATL et MFC sont binairement incompatibles avec les même classes d'une version précédente. De ce fait, tout code compilé utilisant mfc42.dll doit être recompilé avec Visual Studio .NET.
    De même, tout fichier DLL ou LIB utilisé par votre application doit aussi être reconstruit avec Visual .NET
    Par exemple, une librairie contenant une fonction exportée prenant CString comme parametre, et qui avait été construite avec Visual C++ 6.0 générera une erreur à l'édition de lien de Visual C++ .NET.
    source:
    Dans mon cas, je suis sur VC2008, le compilateur m'a demandé MFC42 et d'autres fichiers du même type (version 4.2), on peut donc supposer qu'ils étaient déclarés quelque part dans le projet, mais je ne parviens pas à trouver ou ?

    Avez vous une idée ? Merci !

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci Medinoc, je n'avais pas vu ta réponse. Je vais chercher la lib en cause.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Comme je l'ai dit, tu dois avoir une lib statique qui la référence. Une lib statique référencée par ton projet.

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. Réponses: 3
    Dernier message: 20/02/2009, 17h26
  3. Réponses: 4
    Dernier message: 16/02/2009, 11h04
  4. Réponses: 23
    Dernier message: 15/08/2008, 05h14
  5. Migration VC6.0 vers VC2008
    Par squale32 dans le forum Visual C++
    Réponses: 21
    Dernier message: 10/03/2008, 16h57

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