Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1557 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Erreur lancée par le linker

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur lancée par le linker

n°1125604
paowz
Posté le 20-06-2005 à 21:09:39  profilanswer
 

Bonjour à tous,  
 
j'ai fait une recherche sur le forum, mais, j'ai pas trouvé de quoi m'aider..
Mon problème de newbie est le suivant, j'ai deux fichiers, dans le premier, je déclare une classe et dans le deuxieme, je voudrais instancier un objet de cette classe...
donc j'ai mis un include du premier fichier dans le deuxieme fichier...ca compile mais erreur lors du linkage..
voici la log:

Citation :

Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Exécution de  make...
make.exe -f "C:\Dev-Cpp\Makefile.win" all
g++.exe -c SansNom1.cpp -o SansNom1.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"    
 
g++.exe -c SansNom2.cpp -o SansNom2.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"    
 
g++.exe SansNom1.o SansNom2.o  -o "Projet1.exe" -L"C:/Dev-Cpp/lib"  
 
SansNom2.o(.text+0x0):SansNom2.cpp: multiple definition of `MyFrame::GetEventTable() const'
SansNom1.o(.text+0x0):SansNom1.cpp: first defined here
SansNom2.o(.text+0xa):SansNom2.cpp: multiple definition of `MyFrame::GetEventHashTable() const'
SansNom1.o(.text+0xa):SansNom1.cpp: first defined here
SansNom2.o(.text+0x14):SansNom2.cpp: multiple definition of `MyFrame::MyFrame(wxString const& )'
SansNom1.o(.text+0x14):SansNom1.cpp: first defined here
SansNom2.o(.text+0x76a):SansNom2.cpp: multiple definition of `MyFrame::MyFrame(wxString const& )'
SansNom1.o(.text+0x76a):SansNom1.cpp: first defined here
SansNom2.o(.text+0xec0):SansNom2.cpp: multiple definition of `MyFrame::OnQuit(wxCommandEvent& )'
SansNom1.o(.text+0xec0):SansNom1.cpp: first defined here
SansNom2.o(.rdata+0x0):SansNom2.cpp: multiple definition of `MyFrame::sm_eventTable'
SansNom1.o(.rdata+0x0):SansNom1.cpp: first defined here
SansNom2.o(.bss+0x20):SansNom2.cpp: multiple definition of `MyFrame::sm_eventTableEntries'
SansNom1.o(.bss+0x20):SansNom1.cpp: first defined here
SansNom2.o(.bss+0x0):SansNom2.cpp: multiple definition of `MyFrame::sm_eventHashTable'
SansNom1.o(.bss+0x0


 
etc...etc...j'ai pas tout mis, mais ce sont des erreurs de ce gout la...
 
j'utilise wxwigets et dev-c++
 
si vous avez une idée..
 
PaowZ

mood
Publicité
Posté le 20-06-2005 à 21:09:39  profilanswer
 

n°1125631
el muchach​o
Comfortably Numb
Posté le 20-06-2005 à 21:36:39  profilanswer
 

Tu n'aurais pas oublié de protéger ton .h contre les inclusions multiples, par hasard ?

n°1125633
deather2
Posté le 20-06-2005 à 21:38:10  profilanswer
 

GCC ne gere pas automatiquement ce genre de soucis ?
Car quand on mets #pragma once il dit que c'est deprecated

n°1125638
el muchach​o
Comfortably Numb
Posté le 20-06-2005 à 21:41:46  profilanswer
 

#pragma once n'est pas portable.
D'ailleurs, #pragma, ce sont des commandes non portables par définition, c'est pour ça qu'il faut en utiliser le moins possible.
 
Donc faire comme d'habitude :
#ifndef MACHIN_H_
#define MACHIN_H_
#endif

n°1125717
Taz
bisounours-codeur
Posté le 20-06-2005 à 22:48:33  profilanswer
 

NON ON NE FAIT JAMAIS MACHIN_H !
 
ON FAIT __TOUJOURS__ DUPONT_MACHIN_PROJET_DATE_H ! :o

n°1125718
el muchach​o
Comfortably Numb
Posté le 20-06-2005 à 22:50:45  profilanswer
 

Quel est l'intérêt ? Pour éviter des collisions entre libs ?


Message édité par el muchacho le 20-06-2005 à 22:52:59
n°1125726
Taz
bisounours-codeur
Posté le 20-06-2005 à 22:59:10  profilanswer
 

ben oui. tu crois que y a combien de blaireau dans le monde qui ont écrit un STACK_H !

n°1125999
paowz
Posté le 21-06-2005 à 10:58:37  profilanswer
 

ouais, c'est pas impossible le coup des inclusions multiples, en effet...
mais à quel moment, cela se produirait?

n°1126093
Taz
bisounours-codeur
Posté le 21-06-2005 à 11:44:33  profilanswer
 

ben quand deux blaireaux on fais un STACK_H dans leur fichiers

n°1126104
paowz
Posté le 21-06-2005 à 11:50:50  profilanswer
 

ah??
ok...
sinon, j'ai essayé de mettre un #ifndef etc...et je suis pas arrivé à linker..toujours multiple definitions...
question: je dois bien mettre la directive dans le fichier ou il y a ma classe que je veux instancier, c'est bien ca? (soit dans le premier fichier)

mood
Publicité
Posté le 21-06-2005 à 11:50:50  profilanswer
 

n°1126108
Taz
bisounours-codeur
Posté le 21-06-2005 à 11:52:51  profilanswer
 

montre ton .h

n°1126120
paowz
Posté le 21-06-2005 à 11:58:02  profilanswer
 

LOL
faut un .h??

n°1126123
paowz
Posté le 21-06-2005 à 12:00:13  profilanswer
 

en fait, je vais fixer le truc..I'm a C++beginner..je m'y interesse parce que ca fait quelques années que je faisais un peu de java, j'avais envie de changer par curiosité. :D
 
donc, j'ai lu un peu de doc sur le C++, un bouquin d'un mec, aussi...mais c'est pas évident de démarrer sur quelques chose...
donc, dans mon .h, je dois définir quoi ? ma classe ?


Message édité par paowz le 21-06-2005 à 12:00:34
n°1126188
el muchach​o
Comfortably Numb
Posté le 21-06-2005 à 12:48:48  profilanswer
 

Et si tu lisais le fuckin'manual un peu, avant de venir poser des questions dont la réponse se trouve dans tous les bouquins de C++ ?

n°1126197
paowz
Posté le 21-06-2005 à 12:53:21  profilanswer
 

c'est pas une mauvaise idée, mais parfois c'est chaud de trouver une réponse à une question dont on a déjà du mal à trouver le sens...faut savoir par où commencer à chercher..:)

n°1126316
paowz
Posté le 21-06-2005 à 14:31:27  profilanswer
 

bon...me suis fait un fichier .h... ca ressemble à ça:

Code :
  1. #ifndef WX_PRECOMP
  2.     #include "wx/wx.h"
  3. #endif
  4. class MyApp : public wxApp
  5. {
  6. public:
  7.     virtual bool OnInit();
  8. };
  9. class MyFrame : public wxFrame
  10. {
  11. public:
  12.     MyFrame(const wxString& title);
  13.     void OnQuit(wxCommandEvent& event);
  14. private:
  15.     DECLARE_EVENT_TABLE()
  16. };


 
voilà, donc j'implémente dans un .cpp ces deux classes, ca compile, mais toujours pas de linkage avec pour message d'erreur principal : undefined reference.
une idée??

n°1126342
Taz
bisounours-codeur
Posté le 21-06-2005 à 14:56:40  profilanswer
 

manque un destructeur virtuel.
 
Et maintenant, t'arrêtes de nous saouler, tu relis le topic, ton .h il est pourri

n°1126347
paowz
Posté le 21-06-2005 à 14:58:45  profilanswer
 

ok...ok..j'arrete de vous saouler...
merci à vous qd même.
bonne continuation...:)

n°1127303
paowz
Posté le 22-06-2005 à 13:14:51  profilanswer
 

en fait, dans dev-c++, il faut créer un projet wxwidgets et non pas un projet vide...sinon ca initialise pas les paths pour le linker..
merci à toi, le tazé :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Erreur lancée par le linker

 

Sujets relatifs
???ERREUR???Erreur de syntaxe ????????????????????????
Erreur de segmentationErreur sdtafx
l'erreur : NoClassDefFoundError java.lang.Class.forName0(Native MethodErreur transfert ftp en PHP (je ne comprends pas...)
installation mediawiki sur compte free.erreur....Erreur "broken pipe" et flush de stdout
Erreur d'application quand j'enregistre le prgmerreur de segmentation
Plus de sujets relatifs à : Erreur lancée par le linker


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR