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 :

Erreur de Link


Sujet :

Visual C++

  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut Erreur de Link
    Bonjour � tous !
    Dans un projet Windows Forms application, plus exactement dans le header de ma form je cr�e une fonction quelconque (en l'occurence ME() ).
    Je l'appelle depuis un �v�nement quelconque (en l'occurence OnClick())...

    R�sultats :

    1>stdafx.obj : error LNK2005: "void __clrcall ME(void)" (?ME@@$$FYMXXZ) already defined in Projet.obj
    1>Projet.exe : fatal error LNK1169: one or more multiply defined symbols found

    Ca m'�tonnerait que je sois le seul qui ait rencontr� ce probl�me c'est pour cel� que je fais appel � vos exp�riences dans Visual Studio.

    Merci � vous !

  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,
    h� bien il semble que tu as d�j� d�fini cette m�thode dans ta classe...

  3. #3
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    Non !
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    void ME()
    {
               int i = 0;
    }
     
    namespace X
    {
             public ref class FORM...
     
             private: System.... Evenements
                         { ME(); }
    };
    En fait je viens de r�gler le probl�me de l'exemple pos� : il suffisait de rajouter inline devant void ME()...
    Bon dans le vrai exemple : on a le header de la form et un header qui n'appartient pas au projet.
    Dans le header je d�finis une classe avec une fonction membre.
    J'appelle la fonction membre du header dans un �v�nement de ma form (dans le header de la form).

    J'ai dans mon cas les erreurs suivantes avec scan3D le namespace contenant la d�finition de la form (situ� dans le header de la form) et CWebCam::Connect ma fonction membre :
    1>stdafx.obj : error LNK2028: unresolved token (0A00000A) "public: int __clrcall CWebCam::Connect(short,short)" (?Connect@CWebCam@@$$FQAMHFF@Z) referenced in function "private: void __clrcall scan3D::Form1::takepicture_Click(class System::Object ^,class System::EventArgs ^)" (?takepicture_Click@Form1@scan3D@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

  4. #4
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    Class.h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    class CMyClass
    {
    public:
            CMyClass(){}
            void MyFonction();
    };
    Class.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    void CMyClass::MyFonction()
    {
         // Do Something //
    }
    Form1.h
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    #include "Class.h"
     
    namespace MySpace
    {
            public ref class Form1 : public System::Windows::Forms::Form
            {
    public: 
    	             CMyClass *pClass; // INSTANCE de Class.h //
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
                                          pClass = new pClass;  
    		}
     
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->SuspendLayout();
     
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(222, 336);
    			this->Controls->Add(this->label1);
    			this->Controls->Add(this->loadcam);
    			this->Controls->Add(this->listcam);
    			this->Controls->Add(this->takepicture);
    			this->Controls->Add(this->viewpicture);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			(cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->viewpicture))->EndInit();
    			this->ResumeLayout(false);
    			this->PerformLayout();
     
    		}
    #pragma endregion
     
    };
            }
    }
    On ajoute un �v�nement : par exemple l'�v�nement OnClick sur la Form1.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    private: System::Void Form1_Click(System::Object^  sender, System::EventArgs^  e) {
              this->pClass->MyFonction();
    }
    A l'appel de "MyFonction", c'est l� qu'on a l'erreur de link.
    unresolved external symbol public: void MyFonction()... referenced in fonction
    private System::Void Form1_Click...

    J'esp�re avoir �t� clair (pour une fois)

  5. #5
    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
    heu c'est une erreur de copie la ?:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Form1(void)
            {
                InitializeComponent();
                //
                //TODO: Add the constructor code here
                //
                                          pClass = new pClass;  
            }
    c'est pClass = new CMyClass;

  6. #6
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    Erreur de copie excuse moi

  7. #7
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2006
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par d�faut
    R�solu par l'inclusion de la classe externe dans le header de la form
    + ajout d'une lib...
    C'�tait bidon...
    Merci comme m�me � toi farscape

  8. #8
    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
    effectivement un grand classique

Discussions similaires

  1. erreur de link
    Par meli0207 dans le forum MFC
    R�ponses: 6
    Dernier message: 04/05/2007, 10h17
  2. template et erreur de link
    Par Willand dans le forum Langage
    R�ponses: 12
    Dernier message: 05/12/2006, 21h19
  3. erreur de link(age) g++
    Par corwin dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 05/05/2004, 11h33
  4. [wxWindows] Erreur de link pour ODBC
    Par ovh dans le forum wxWidgets
    R�ponses: 3
    Dernier message: 28/01/2004, 15h38
  5. DirectDrawCreate erreur de link
    Par Ing_Ben dans le forum DirectX
    R�ponses: 1
    Dernier message: 01/12/2002, 18h46

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