Bonjour,
C'est encore notre ami le linker. Il y a encore quelque chose qui a été déclaré mais il ne trouve pas le code correspondant, par contre (et je ne sais pas pourquoi il se permet ce genre de chose) il a trouvé un autre truc et il l'a mis à la place.
Soit ça passe, soit ton programme plantera dès qu'il ira chercher _kAssertMsg.
Il y a trois solution si ça plante.
- Prier.
- Trouver où l'élément manquant est rangé pour lui rajouter la librairie.
- Lui rajouter nous même cet élément.
et trois si ça ne plante pas:
- s'en contenter
- Trouver où l'élément manquant est rangé pour lui rajouter la librairie.
- Désactiver le message du linker (par contre il ne nous a pas donné son identifiant...)
En cas de plantage si la deuxième échoue je ferais la troisième... (bien documenté et dans un fichier à part du reste du code) car même si tu n'utilises pas cet élément peut-être que ROOT le fait en interne...
dans TError.h (
vu ici sur le net)
Tout au bas il y a la déclaration de kAssertMsg qui est une chaîne de caractère.
Le mieux serait de faire un mini programme soit qui affiche cette chaîne et être fixé tout de suite, soit qui utilise les Assert définis en dessous.
Assert est une fonction de débuggage qui consiste à faire planter volontairement son programme si une condition n'est pas vérifiée et de d'afficher un message contenant l'expression fausse, le fichier et la ligne. Généralment on fait une fonction, on précise que le pointeur en paramètre doit être valide et plutôt que de tester chaque fois si le type a lu le commentaire on met un assert qui fera planter si le pointeur est nul: l'intérêt est que normalement le Assert n'est compilé que en mode debug.
Si il y a un blême tu peux juste ajouter un fichier .c avec la définition et voir si le linker est content avec ou non.
const char *kAssertMsg = "Assertion failled ";
C'est pas très beau mais il y a de forte chance que ce soit un problème de version de ROOT ou une chose du genre car il trouve très bien le message du kCheckMsg.
Tu peux toujours tenter de te mettre à la racine de ROOT en mode console et de lancer une recherche du style:
grep -r kCheckMsg *
et voir si il trouve un .c, .o ou .a où il y a ça.
M.
Alors ? on code même le dimanche ? ;-)