Bonjour, la situation me laisse assez pantois, peut-être que quelqu'un pourra m'aider. Je vais tâcher d'expliquer la situation.
J'essaie de faire un petit jeu de labyrinthe avec opengl, en partant d'un programme proposé dans un bouquin et en le modifiant. J'ai plusieurs classes pour le labyrinthe, les cellules, les objets du jeu. J'ai des relations croisées, dans le sens par exemple où un labyrinthe a des vecteurs de cellules, et une cellule possède une référence au labyrinthe qui le contient, une cellule contient un objet du jeu et un objet du jeu a une référence envers son emplacement. J'ai été obligé de passer par des déclarations de prototype.
Une interface inclue les fichiers de glut, avant d'être incluse dans les classe l'implémentant. Mon souci apparait quand je veux faire des inclusions pour les références croisées. A ce moment-là, le compilateur affirme qu'il y a redéfinition ( "exit", "__declspec(noreturn)" ?????) dans le fichier "stdlib.h". Je suppose que c'est lié à opengl, puisque je ne fais aucune inclusion C explicite.
Le message d'erreur :
error C2381: 'exit'*: redéfinition*; __declspec(noreturn) est différent
Le conflit semble se poser entre "stdlib.h" et "glut.h".
Je pose ici un récapitulatif de certains classes, qui suffisent à générer le problème:
Drawable : interface d'un objet dessinable, inclu glut.
BaseGameObject : classe abstraite pour les objets du jeu, contient un pointeur vers un objet Cell conteneur, hérite de Drawable.
Cell : classe abstraite, objet représentant une "case" du labyrinthe, hérite de Drawable, contient un pointeur vers un objet BaseGameObjet contenu dans la case, et un pointeur vers un objet Labyrinth, conteneur de la cellule.
Labyrinth : objet représentant le plateau de jeu, hérite de Drawable, contient une matrice de pointeurs de Cell (vector<vector<Cell*> >).
Je travaille avec Visual C++ 2008 Express Edition. Une fois n'est pas coutume j'ai utilisé le pragma once de Visual au lieu des #ifndef classique, mais j'ai du mal à croire que ça puisse être la cause de mon problème.
J'hésite à mettre ici le code source, il y a plusieurs fichiers concernés, je le ferai s'il le faut mais peut-être que ces premiers indices vont éveiller quelque chose dans la mémoire de programmeurs qui ont plus d'expérience que moi.
Merci d'avance.
Partager