(visual c++) pbl avec les includes et le link...

pbl avec les includes et le link... (visual c++) - C++ - Programmation

Marsh Posté le 16-11-2002 à 17:57:26    

Je fait un modeleur 3D en C++ sous Visual. Voici mon problème :
 
j'ai une classe "dialog" qui va instantier :
- 4 objets affichant chacun une fenetre opengl (haut/profil/...)
- un objet "scene" qui va gérer le nombre d'éléments de la scene et leurs positions, etc...
 
Le truc, c'est que la définition de la classe "scene" doit être évidemment connu par la classe "dialog" (pour que celle-ci la crée, mais aussi par la classe "fenetre opengl" (pour que celle-ci intéragisse avec elle).
 
Tout marche à la compilation. C'est lors du link qu'il y a 4 erreurs du type : "class scene... ... already defined".
 
Je crois savoir que c'est parce que plusieurs fichiers .ccp et/ou .h font référence au fichier où est défini la classe "scene".
J'ai essayé avec les #ifndef... mais ça n'a pas l'air de marcher
 
Aidez-moi please, ça fait 3 jours...

Reply

Marsh Posté le 16-11-2002 à 17:57:26   

Reply

Marsh Posté le 16-11-2002 à 18:57:01    

humpf je vois pas trop ou ca peut bricoler.
 
basiquement tu as :
 
 
dialog.h :
#include "scene.h"
 
fenetreOGL.h:
#include "scene.h"
 
 
c bien ca ?
tu n'as pas des blagues genre A qui inclue B et B qui inclue A ?
 
tu peux poster les erreurs de link in extenso ?

Reply

Marsh Posté le 16-11-2002 à 19:57:25    

voici les erreurs de link :
 
Linking...
moc_modeleurdialog.obj : error LNK2005: "class Scene *  newScene" (?newScene@@3PAVScene@@A) already defined in main.obj
modeleurdialog.obj : error LNK2005: "class Scene *  newScene" (?newScene@@3PAVScene@@A) already defined in main.obj
oglviewer.obj : error LNK2005: "class Scene *  newScene" (?newScene@@3PAVScene@@A) already defined in main.obj
Debug/Modeleur.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
 
Modeleur.exe - 4 error(s), 0 warning(s)

Reply

Marsh Posté le 16-11-2002 à 21:44:42    

t'aurais pas une var globale nommé "newScene", toi, des fois, par hasard  :D
var déclarée dans un .h ? :D
 
dans le .h tu rajoute extern devant. Genre
 
extern Scene *newScene;
 
et dans UN cpp (un seul), tu fais :
Scene *newScene

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed