lien pour signification des messages d'erreurs

lien pour signification des messages d'erreurs - C++ - Programmation

Marsh Posté le 21-10-2003 à 10:04:11    

Salut tout le monde!
 
je recherche un lien ou un tutorial pour apprendre à interpréter les messages d'erreurs pouvant apparaitre à l'exécution d'un programme en C++.
 
actuellement, mon prog compile bien, mais à l'exécution il me sort un truc du genre :
GraphExtraction.so: undefined symbol: _ZN13ParametersSetD1Ev (traduit avec c++filt, ça donne : ParametersSet::~ParametersSet [in-charge]())
 
donc je me doutes bien qu'il y a un problème avec mon destructeur, mais je vois pas lequel pour l'instant.
 
voilà, si vous avez un lien, une idée, un début de lien ou d'idée, enfin help quoi!! ;-)
 
merci

Reply

Marsh Posté le 21-10-2003 à 10:04:11   

Reply

Marsh Posté le 21-10-2003 à 10:08:14    

t'as deja un enorme probleme de vocabulaire, et visiblement aucune idee de comment un programme C est transformé en un executable.
L'erreur que tu cites ici n'est en aucun cas une erreur d'execution, mais une erreur de link (edition de lien si tu preferes) qui est la derniere etape avant la creation de ton executable final.
 
Ce qu'il essaye de te dire c'est que tu fais appel a un destructeur, mais que tu n'a pas programmer ledit destructeur
 
proot j'ai rien dit, pas vu que c'etait un SO, mea culpa


Message édité par chrisbk le 21-10-2003 à 10:08:53
Reply

Marsh Posté le 21-10-2003 à 10:29:19    

chrisbk a écrit :

t'as deja un enorme probleme de vocabulaire, et visiblement aucune idee de comment un programme C est transformé en un executable.
L'erreur que tu cites ici n'est en aucun cas une erreur d'execution, mais une erreur de link (edition de lien si tu preferes) qui est la derniere etape avant la creation de ton executable final.
 
Ce qu'il essaye de te dire c'est que tu fais appel a un destructeur, mais que tu n'a pas programmer ledit destructeur
 
proot j'ai rien dit, pas vu que c'etait un SO, mea culpa


 
Ben c presque pareil sauf que l'édition des lien se fait à l'exécution, d'où pas d'erreur à la compil mais à l'exécution. T'étais sur la bonne voie ;)


---------------
Le Tyran
Reply

Marsh Posté le 21-10-2003 à 10:31:08    

LetoII a écrit :


 
Ben c presque pareil sauf que l'édition des lien se fait à l'exécution, d'où pas d'erreur à la compil mais à l'exécution. T'étais sur la bonne voie ;)


 
ouais mais ma phrase d'intro tombait un peu a plat :D

Reply

Marsh Posté le 21-10-2003 à 10:36:48    

en premier lieu, j'ai pas dit que c'était une erreur d'exécution, mais une erreur à l'exécution (au moment où j'exécute le programme général), et je sais (enfin j'ai découvert en cherchant un peu) que c'est une erreur d'exécution de lien).
 
je fais pas du c++ depuis super longtemps, et j'ai pas vraiment le temps (malheureusement) de me plonger à fond dedans, mais je trouve les messages d'erreurs peu explicites et peu de sites/bouquins où on les expliques.
 
pour ce qui est de mon destructeur, il me semblait qu'un destructeur, s'il n'est pas défini explicitement, l'est de manière implicite, et que de toutes façons, ça ne consiste qu'à écrire ~maClasse() {}
 
je me trompe?
 
j'essaye de faire de mon mieux... chuis pas un gourou c++ (pas encore, niark niark)

Reply

Marsh Posté le 21-10-2003 à 10:40:18    

Citation :

pour ce qui est de mon destructeur, il me semblait qu'un destructeur, s'il n'est pas défini explicitement, l'est de manière implicite, et que de toutes façons, ça ne consiste qu'à écrire ~maClasse() {}


 
Attention !
 
Figure 1:
 

Code :
  1. class toto
  2. {
  3. toto();
  4. ...
  5. };


 
Ici pas de destructeur de specifié: le compilo t'en fournis un par defaut, tout va bien
 
Figure 2:
 

Code :
  1. class toto
  2. {
  3. toto();
  4. ~toto();
  5. ...
  6. };


 
La tu as specifié un destructeur, il te *faut* le definir, fut il aussi trivial que :
 

Code :
  1. toto::~toto()
  2. {
  3. }


 

Reply

Marsh Posté le 21-10-2003 à 10:43:33    

oui, c'est bien ça, c'est exactement ce que je fais (d'ailleurs c'est stupide, car s'il est trivial, autant ne pas le définir dans la classe non?).
 

Reply

Marsh Posté le 21-10-2003 à 10:46:19    

C un truc a toi la paramaterSet ou pas ?

Reply

Marsh Posté le 21-10-2003 à 10:50:13    

ouaip, mais ce qui est étonnant, c'est que si je commente la ligne qui déclare le destructeur, il ne me sort plus cette erreur.
 
il me sort le même genre d'erreur si par exemple je définis un constructeur vide. donc je vois bien comment résoudre l'erreur, mais je ne comprends pas pourquoi elle apparait. je n'ai vu nulle part qu'on ne pouvait pas déclarer explicitement les constructeurs et destructeurs s'ils sont identiques à ceux fournis par défaut.
 
tu y comprends qqchose?

Reply

Marsh Posté le 21-10-2003 à 10:51:38    

ben si tu declares sans definir ca me parait normal

Reply

Marsh Posté le 21-10-2003 à 10:51:38   

Reply

Marsh Posté le 21-10-2003 à 10:53:54    

non non, je déclares les constructeurs et destructeurs dans mon header de classe, et dans l'implémentation, je les défini (certe, ça se résume à { } comme définition, mais bon..)
 
désolé, je m'exprime mal parfois! ;-)

Reply

Marsh Posté le 21-10-2003 à 10:54:58    

ben alors tu dois oublier de specifier un fichier au link.....

Reply

Marsh Posté le 21-10-2003 à 10:56:54    

ouais ben non hein! si j'oubliais d'inclure un header, il compilerait pas non?
 
c vraiment zarb ce truc.
 
sinon, pour ma question plus générale, un livre ou un site pour la signification des messages d'erreur? paske le in-charge, je comprends pas trop là...


Message édité par arghbis le 21-10-2003 à 10:57:53
Reply

Marsh Posté le 21-10-2003 à 10:57:35    

non pas un header mais un fichier au link
(Comme quoi j'avais quand meme raison, le processus de compilation dans son ensemble te laisse encore reveur)

Reply

Marsh Posté le 21-10-2003 à 10:58:52    

Fait péter un bout de code par ce que là on va pas s'en sortir...


---------------
Le Tyran
Reply

Marsh Posté le 21-10-2003 à 10:59:33    

réveur, pas sûr, cauchemardeur (si ce mot existe...) ouaip, c'est possible.
 
letoII : un bout de code de koi?
 
je vais d'abord reprendre tout mon code, vérifier encore une fois que tout est bien défini comme il faut (ou comme il me semble qu'il faut) pis si y'a encore un bug/erreur je remonterait le topic.
 
enfin bon, merci d'essayer d'éclairer ma lanterne.


Message édité par arghbis le 21-10-2003 à 11:01:08
Reply

Marsh Posté le 21-10-2003 à 11:02:22    

LetoII a écrit :

Fait péter un bout de code par ce que là on va pas s'en sortir...


 
http://www.reproducts.de/produkte/2001/0002_derrick/derrick.jpg
 
 
l'enquete s'annonce difficile

Reply

Marsh Posté le 22-10-2003 à 10:44:31    

bon ben ça y est, j'ai trouvé l'erreur, et je suis un boulet!
 
grosso modo, comme je ne suis pas au top en c++, ben il y a des choses pas évidentes pour moi, genre, un template ou assimilé, ben tu définis et tu déclares les fonctions dans le même fichier ou alors tu utilises le découpage "classique" en .h et .cpp, mais en faisant un include du cpp dans le .h .
 
hors, je n'utilisais pas cette syntaxe, alors forcément, il ne trouvait pas les implémentations des fonctions déclarées.
 
Chuis un boulet, ok c vrai, mais j'ai appris un truc utile au moins!!

Reply

Marsh Posté le 22-10-2003 à 10:54:46    

on va faire la promo de gSTLfilt http://www.bdsoft.com/tools/stlfilt.html

Reply

Marsh Posté le 22-10-2003 à 10:57:28    

tiens, ça à l'air sympa comme truc! merci

Reply

Sujets relatifs:

Leave a Replay

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