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

C++ Discussion :

LNK2005??


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut LNK2005??
    bonjour!!

    j ai un probleme avek mon projet!!
    tout les fichiers se copilent sans problemes mais quand il passe au link,

    il m affiche cette erreur!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objetsDeriv.obj : error LNK2005: "public: static int video::tempEmpruntV" (?tempEmpruntV@video@@2HA) already defined in objets.obj
    je ne met pas le code parckil est long et en plus je pensse que ca doit etre un probleme classic!!!

    quelqu un peut m expliquer ou est le probleme!!!

    tout m a l air bien!! rien n est declarer 2 fois!!

    c vrai que je reinclut plusieurs fois le fichiers .h dans lequel je declare la variable static!

    mais le fichier est entoure de #ifndef... #define...

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Est-ce que tu utilises Visual C++?
    Si oui:
    http://support.microsoft.com/default.aspx?scid=kb;en-us;q148652#kb1

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Cela n'a pas l'air d'être un problème de bibliothèque.

    Le problème, c'est que
    fichiers .h dans lequel je declare la variable static!
    La variable membre static ne doit PAS être déclarée dans un header, mais dans le fichier source de la classe.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    merci!!

    j ai deplace la definition dans le fichier cpp et tout marche bien!!

    mais pourquoi elle est redefini plusieurs fois alors que le definition se trouve entre les macros #ifndef #define #endif??

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Parce qu'ainsi, tu te retrouve avec la variable définie "une seule fois" dans chaque .cpp qui inclut le .h
    ---> Tu te retrouves donc avec la variable définie dans plusieurs .obj, alors qu'elle ne doit exister qu'une seule fois dans tout le projet...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 86
    Points
    86
    Par défaut
    et pourquoi ma classe n est pas defini plusieurs fois meme si j inclu plusieurs fois le fichier .h???

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Parce que le fichier .h n'est pas supposé contenir du code (à part des fonction inline ou template).

    Une déclaration de classe ou de fonction ou variable, wou une définition de fonction template ou inline, c'est abstrait, ça ne produit pas de code directment quand on le lit. --> ça va dans un .h

    Une définition de fonction ou de variable, c'est concret, c'est directement convertit en code et c'est exporté --> Ça va dans un .cpp.

    Ta variable de classe statique est déclarée dans la classe et définie en dehors. C'est la définition qui ne doit pas se trouver dans un header (dans le fichier source de la classe, par exemple)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Erreur de liaison : LNK2005: _DllMain@12
    Par oodini dans le forum Visual C++
    Réponses: 3
    Dernier message: 08/02/2007, 12h25
  2. Erreur LNK2005 avec Visual C++ 6
    Par Chatbour dans le forum Visual C++
    Réponses: 2
    Dernier message: 20/10/2006, 21h35
  3. Error LNK2005
    Par usbeck dans le forum C++
    Réponses: 8
    Dernier message: 17/08/2006, 09h39
  4. [MFC]error LNK2005
    Par annedjomo dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2006, 21h15
  5. Réponses: 2
    Dernier message: 31/10/2005, 13h40

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