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

VC++ .NET Discussion :

error LNK2001: symbole externe non r�solu


Sujet :

VC++ .NET

  1. #1
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut error LNK2001: symbole externe non r�solu
    Bonjour ;

    j'ai cr�e une biblioth�que sous visual c++


    ensuite j'ai cr�e un projet ou je voulais utiliser ma biblioth�que mais j'ai c'est deux erreurs :


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    VecteurLib.lib(VectLib.obj) : error LNK2001: symbole externe non résolu "public: static double VectLib::Vecteur::yval" (?yval@Vecteur@VectLib@@2NA)
    1>VecteurLib.lib(VectLib.obj) : error LNK2001: symbole externe non résolu "public: static double VectLib::Vecteur::xval" (?xval@Vecteur@VectLib@@2NA)
    j'ai r�vis� mon code plusieurs fois moi je ne vois pas ou est l'erreur .

    merci d'avance our votre aide .

  2. #2
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par d�faut
    Bonjour,

    tu dois ajouter une initialisation a tes membres static

    Exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     
    double VectLib::Vecteur::xval = NULL;
    Fait le en dehors du header tu risque d'avoir des probl�me de double d�claration de ton static

  3. #3
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    Citation Envoy� par jouana Voir le message
    Bonjour,

    tu dois ajouter une initialisation a tes membres static

    Exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
     
    double VectLib::Vecteur::xval = NULL;
    Fait le en dehors du header tu risque d'avoir des probl�me de double d�claration de ton static
    j'ai pas compris ou je dois rajouter �a exactement et pourquoi , merci .

  4. #4
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par d�faut
    Logiquement tu dois faire un fichier header (.h) pour les d�claration
    et un fichier source (.cpp) pour l'impl�mentation de ta classe

    voici un exemple

    Fichier MaClass.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    class MaClasse
    {
    static int a;
    public:
        void maMethod();
    }
    Fichier source .MaClass.cpp

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    #include "MaClass.h"
     
    int MaClasse::a = 0;
     
    void MaClasse::MaMethod()
    {
    /// impl.
    }
    Si tu n'as pas ces notions �a veut dire que tu commence dans ce langage je te conseil donc de faire des tuto
    Bonne journ�e

  5. #5
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    c'est vrai que je commence avec le c++ , mais pour la notion des classes cava , j'ai cr�� une biblioth�que statique , et j'ai met deux classe "point et vecteur" dans un namespace et je les ai d�clar� dans le fichier .h , que j'ai coll� dans ma question .

  6. #6
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    en plus c'est je rajoute #include "MaClass.h" dans le ficher .cpp , j'ai l'erreur red�finir la classe

  7. #7
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Regardez plus attentivement le post jouana.
    "class XXX{...}" c'est � mettre uniquement dans le .h.

  8. #8
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Regardez plus attentivement le post jouana.
    "class XXX{...}" c'est � mettre uniquement dans le .h.
    d'apr�s son poste faut le mettre en dehors du .h


    "Fait le en dehors du header tu risque d'avoir des probl�me de double d�claration de ton static " !

  9. #9
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par d�faut
    Le c++ et un peu plus contraignant que le java ou le c#

    Le .h est un fichier de d�claration
    Le .cpp est un fichier d'impl�mentation

    En gros tu d�finit ta classe dans le .h et tu initialise la variable static dans le .cpp
    Et tu impl�mente les methodes dans le fichier .cpp

  10. #10
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    Citation Envoy� par jouana Voir le message
    Le c++ et un peu plus contraignant que le java ou le c#

    Le .h est un fichier de d�claration
    Le .cpp est un fichier d'impl�mentation

    En gros tu d�finit ta classe dans le .h et tu initialise la variable static dans le .cpp
    Et tu impl�mente les methodes dans le fichier .cpp
    est ce que j'ai pas fait �a dans mon code ? j'ai mets les declarations dans .h et je les ai impl�ment� dans le .cpp
    est ce que c'est faut de mettre deux classes dans le namespace ?

  11. #11
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    >est ce que j'ai pas fait �a dans mon code ? j'ai mets les declarations dans .h et je les ai impl�ment� dans le .cpp

    NON, vous avez d�clar� dans le .h et vous avez d�clar� des fonctions "inlines" dans le .cpp
    Le format d'impl�mentation et bien diff�rent du format de d�claration.

    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
     
    namespace VectLib
    {  
       class Point
       {
          public:
     
          double xVal, yVal; // x and y co-ordinates of Point. 
          void setCoords(double x, double  y){xVal = x; yVal = y;}
          double getX() {return xVal;}
          double getY() { return yVal;}   
       };
     
       class Vecteur 
       {
          public : 
             static double xval;
             static double yval; 
     
           double getx(void) ;
           double gety(void) ; 
     
    };
     
       Vecteur initialiser(double x  , double y );
       Vecteur initialiserAvecPoint (Point a , Point b);
       Point initialiserPoint (double x, double y);
       void afficher(Vecteur v) ; 
       double norme (Vecteur v);
       Vecteur additionner(Vecteur v1 ,Vecteur v2 );
       Vecteur soustraction (Vecteur v1 ,Vecteur v2 );
       double multiplication (Vecteur v1 ,Vecteur v2 );
    }
    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
     #include <iostream>
     
    using namespace std;
     
    namespace VectLib 
    {
     
       double Vecteur::xval = 0; 
       double Vecteur::yval= 0; 
       double Vecteur::getx(void) {return xval;}  
       double Vecteur::gety(void) {return yval;}  
     
       Point initialiserPoint (double  x, double y)
       { 
    ...
       }
    ...
    } //Fin du namespace
    >est ce que c'est faut de mettre deux classes dans le namespace ?
    SI, c'est autoris� et c'est une bonne pratique.

  12. #12
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    vous pensez que
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      void setCoords(double x, double  y) {xVal = x; yVal = y;}
    est la cause de l'erreur.


    des fonctions "inlines" dans le .cpp ? pour chaque fonction j'ai prit son prototype et je je l'ai inser� dans le .h , est ce que vous pouvez m'�claircir plus s'il vous plait .

  13. #13
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    void setCoords(double x, double  y) {xVal = x; yVal = y;}
    Si setCoords est une m�thode de Point, ceci est une d�claration et l'impl�mentation "inline" de la m�thode, cela ne peut appara�t que dans un .h.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    void Point::setCoords(double x, double  y) {xVal = x; yVal = y;}
    Est une impl�mentation de la m�me m�thode, et ne peut appara�t que dans un .cpp.

    "class XXX{...}" c'est � mettre uniquement dans le .h. (BIS)

  14. #14
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    Citation Envoy� par bacelar Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    void setCoords(double x, double  y) {xVal = x; yVal = y;}
    Si setCoords est une m�thode de Point, ceci est une d�claration et l'impl�mentation "inline" de la m�thode, cela ne peut appara�t que dans un .h.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    void Point::setCoords(double x, double  y) {xVal = x; yVal = y;}
    Est une impl�mentation de la m�me m�thode, et ne peut appara�t que dans un .cpp.

    "class XXX{...}" c'est � mettre uniquement dans le .h. (BIS)
    j'ai supprim� compl�tement cette fonction meme si c'est pas la causse du probl�me voici l'erreur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    : error LNK2001: symbole externe non résolu "public: static double VectLib::Vecteur::yval" (?yval@Vecteur@VectLib@@2NA)

  15. #15
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Vous n'avez toujours pas compris la diff�rence entre une d�claration et une impl�mentation.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    namespace VectLib 
    {
     /*class Vecteur A NE SURTOUT PAS METTRE
        {*/
    ...
          double Vecteur::xval = 0; 
    ...
       }
    ...
    }

  16. #16
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    /*class Vecteur A NE SURTOUT PAS METTRE !!
    {*/

    commet �a je ne mets pas la classe dans le .h ou bien dans le .cpp dans le tuto y'avait toujours la classe dans le deux fichier .

    Voici mon dossier .h dites moi juste qu'est ce qu'il faut mettre ou pas

  17. #17
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    >commet �a je ne mets pas la classe dans le .h ou bien dans le .cpp
    Dans le CPP, le .h est "bon".

    >dans le tuto y'avait toujours la classe dans le deux fichier
    Quel tuto ?

  18. #18
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    j'ai enlev� les deux classes du .cpp il reconnu plus .cpp , j'ai rajouter #include <VectLib.h> dans le .cpp il la souligne en rouge il me dit impossible d'ouvrir le fichier source , sachant qu'ils ont de le meme dossier.

  19. #19
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    j'ai rajouter #include <VectLib.h>
    Vous ne connaissez pas encore la diff�rence entre
    #include <VectLib.h>
    et
    #include "VectLib.h"
    .

  20. #20
    Membre tr�s actif
    Profil pro
    Doctorant
    Inscrit en
    F�vrier 2011
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2011
    Messages : 258
    Par d�faut
    merci bacelar merci jouana , dites moi juste est ce que il faut toujours initialiser les variables utilis�es dans le fichier .cpp

Discussions similaires

  1. error LNK2019: symbole externe non r�solu
    Par sheep_one dans le forum Windows
    R�ponses: 0
    Dernier message: 03/06/2010, 11h03
  2. error LNK2019: symbole externe non r�solu
    Par Halloula dans le forum Visual C++
    R�ponses: 3
    Dernier message: 28/11/2009, 02h19
  3. error LNK2019: symbole externe non r�solu
    Par bugmenot dans le forum Visual C++
    R�ponses: 6
    Dernier message: 24/11/2009, 01h02
  4. R�ponses: 3
    Dernier message: 30/10/2009, 11h38
  5. error LNK2001:sumbole externe non r�solu
    Par mony84 dans le forum Biblioth�que standard
    R�ponses: 7
    Dernier message: 27/08/2008, 17h17

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