undefined reference to `Ecrire::Ecrire[in-charge](char *)
Quel compilo ?
g++
kanze
Nicolas wrote:
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Quand tu écris un constructeur, certains compilateurs en génèrent en fait deux, un qui est appelé pour créer un objet du type, et un qui est appelé des constructeurs des classes dérivées. Chez g++, le premier s'appelle [in-charge].
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout. En ce qui te concerne, dans ce cas-ci, l'[in-charge] ne veut rien dire.
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Nicolas wrote:
Dans un programme j'ai cette erreur :
undefined reference to `Ecrire::Ecrire[in-charge](char *)
que veut dire le mot clé in-charge svp ?
Quand tu écris un constructeur, certains compilateurs en
génèrent en fait deux, un qui est appelé pour créer un objet du
type, et un qui est appelé des constructeurs des classes
dérivées. Chez g++, le premier s'appelle [in-charge].
Dans la pratique, quand tu as ce genre de message de l'éditeur
de liens, ça veut dire que tu ne lui as pas fourni le
constructeur, c'est tout. En ce qui te concerne, dans ce cas-ci,
l'[in-charge] ne veut rien dire.
--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Quand tu écris un constructeur, certains compilateurs en génèrent en fait deux, un qui est appelé pour créer un objet du type, et un qui est appelé des constructeurs des classes dérivées. Chez g++, le premier s'appelle [in-charge].
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout. En ce qui te concerne, dans ce cas-ci, l'[in-charge] ne veut rien dire.
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Matthieu Moy
writes:
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
-- Matthieu
kanze@gabi-soft.fr writes:
Dans la pratique, quand tu as ce genre de message de l'éditeur
de liens, ça veut dire que tu ne lui as pas fourni le
constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as
pas donné d'implementation.
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
-- Matthieu
Jean-Marc Bourguet
Nicolas writes:
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a moins qu'il soit mis dans une bibliotheque consideree avant la premiere reference.
A propos d'in-charge, g++ et d'autres compilateurs generent deux constructeurs (ou du moins deux points d'entree pour les constructeurs), un charge de faire l'initialisation des membres virtuels -- qualifie de in-charge --, l'autre ne le faisant pas. La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Nicolas <fatchoumakou@caramail.com> writes:
Dans un programme j'ai cette erreur :
undefined reference to `Ecrire::Ecrire[in-charge](char *)
que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a
moins qu'il soit mis dans une bibliotheque consideree avant la
premiere reference.
A propos d'in-charge, g++ et d'autres compilateurs generent deux
constructeurs (ou du moins deux points d'entree pour les
constructeurs), un charge de faire l'initialisation des membres
virtuels -- qualifie de in-charge --, l'autre ne le faisant pas. La
difference entre les deux est purement l'affaire du compilateur mais
on se retrouve parfois a la remarquer.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a moins qu'il soit mis dans une bibliotheque consideree avant la premiere reference.
A propos d'in-charge, g++ et d'autres compilateurs generent deux constructeurs (ou du moins deux points d'entree pour les constructeurs), un charge de faire l'initialisation des membres virtuels -- qualifie de in-charge --, l'autre ne le faisant pas. La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet :
La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ? Un des deux constructeurs peut-il exister et pas l'autre ?
-- ;-)
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
La
difference entre les deux est purement l'affaire du compilateur mais
on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ?
Un des deux constructeurs peut-il exister et pas l'autre ?
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet :
La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ? Un des deux constructeurs peut-il exister et pas l'autre ?
-- ;-)
Jean-Marc Bourguet
Fabien LE LEZ writes:
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet :
La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ? Un des deux constructeurs peut-il exister et pas l'autre ?
Pas a ma connaissance. Mais le linker "sait" simplement qu'un nom a ete reference et pas defini. Ensuite il le passe a une routine qui mets en forme pour qu'il soit mieux reconnaissable par le programmeur. Autrement dit
Ecrire::Ecrire[in-charge](char *)
plutot que
__6Ecrire6EcrireIcp
ou quelque chose d'approchant (je doute que le nom que j'ai donne soit reellement utilise par un compilateur).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ <gramster@gramster.com> writes:
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet <jm@bourguet.org>:
La difference entre les deux est purement l'affaire du compilateur
mais on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ?
Un des deux constructeurs peut-il exister et pas l'autre ?
Pas a ma connaissance. Mais le linker "sait" simplement qu'un nom a
ete reference et pas defini. Ensuite il le passe a une routine qui
mets en forme pour qu'il soit mieux reconnaissable par le
programmeur. Autrement dit
Ecrire::Ecrire[in-charge](char *)
plutot que
__6Ecrire6EcrireIcp
ou quelque chose d'approchant (je doute que le nom que j'ai donne soit
reellement utilise par un compilateur).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
On 18 Jan 2005 09:13:04 +0100, Jean-Marc Bourguet :
La difference entre les deux est purement l'affaire du compilateur mais on se retrouve parfois a la remarquer.
D'ailleurs, y a-t-il une bonne raison pour que le linker en parle ? Un des deux constructeurs peut-il exister et pas l'autre ?
Pas a ma connaissance. Mais le linker "sait" simplement qu'un nom a ete reference et pas defini. Ensuite il le passe a une routine qui mets en forme pour qu'il soit mieux reconnaissable par le programmeur. Autrement dit
Ecrire::Ecrire[in-charge](char *)
plutot que
__6Ecrire6EcrireIcp
ou quelque chose d'approchant (je doute que le nom que j'ai donne soit reellement utilise par un compilateur).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Nicolas
Matthieu Moy wrote:
writes:
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
Et pourtant oui je l'ai implémenté
Matthieu Moy wrote:
kanze@gabi-soft.fr writes:
Dans la pratique, quand tu as ce genre de message de l'éditeur
de liens, ça veut dire que tu ne lui as pas fourni le
constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as
pas donné d'implementation.
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
Et pourtant oui je l'ai implémenté
Nicolas
Jean-Marc Bourguet wrote:
Nicolas writes:
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a moins qu'il soit mis dans une bibliotheque consideree avant la premiere reference.
Que veux tu dires par là ? Dans la classe Ecrire j'ai fait une autre petite classe qui me sert pour les méthodes d'Ecrire. Le problème vient pe de là alors ?
Jean-Marc Bourguet wrote:
Nicolas <fatchoumakou@caramail.com> writes:
Dans un programme j'ai cette erreur :
undefined reference to `Ecrire::Ecrire[in-charge](char *)
que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a
moins qu'il soit mis dans une bibliotheque consideree avant la
premiere reference.
Que veux tu dires par là ? Dans la classe Ecrire j'ai fait une
autre petite classe qui me sert pour les méthodes d'Ecrire. Le
problème vient pe de là alors ?
Dans un programme j'ai cette erreur : undefined reference to `Ecrire::Ecrire[in-charge](char *) que veut dire le mot clé in-charge svp ?
Visiblement tu utilises un constructeur declare mais non defini a moins qu'il soit mis dans une bibliotheque consideree avant la premiere reference.
Que veux tu dires par là ? Dans la classe Ecrire j'ai fait une autre petite classe qui me sert pour les méthodes d'Ecrire. Le problème vient pe de là alors ?
kanze
Nicolas wrote:
Matthieu Moy wrote:
writes:
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
Et pourtant oui je l'ai implémenté
Mais pas dans un endroit où l'éditeur de liens peut le rétrouver. Ou bien, tu l'as déclaré inline, mais tu as mis l'implémentation dans un .cc, ou bien, tu as mis l'implémentation dans un fichier que tu n'as pas donné à l'éditeur de liens.
Attention aussi : l'ordre des bibliothèques est significatif avec g++. C-à-d que si la bibliothèque A précède la bibliothèque B dans la ligne de commande, l'éditeur de liens ne va pas chercher dans A pour résoudre des externes dans B.
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Nicolas wrote:
Matthieu Moy wrote:
kanze@gabi-soft.fr writes:
Dans la pratique, quand tu as ce genre de message de
l'éditeur de liens, ça veut dire que tu ne lui as pas
fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais
que tu n'as pas donné d'implementation.
Et pourtant oui je l'ai implémenté
Mais pas dans un endroit où l'éditeur de liens peut le
rétrouver. Ou bien, tu l'as déclaré inline, mais tu as mis
l'implémentation dans un .cc, ou bien, tu as mis
l'implémentation dans un fichier que tu n'as pas donné à
l'éditeur de liens.
Attention aussi : l'ordre des bibliothèques est significatif
avec g++. C-à-d que si la bibliothèque A précède la bibliothèque
B dans la ligne de commande, l'éditeur de liens ne va pas
chercher dans A pour résoudre des externes dans B.
--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Dans la pratique, quand tu as ce genre de message de l'éditeur de liens, ça veut dire que tu ne lui as pas fourni le constructeur, c'est tout.
Plus précisement, que tu as déclaré le constructeur, mais que tu n'as pas donné d'implementation.
Et pourtant oui je l'ai implémenté
Mais pas dans un endroit où l'éditeur de liens peut le rétrouver. Ou bien, tu l'as déclaré inline, mais tu as mis l'implémentation dans un .cc, ou bien, tu as mis l'implémentation dans un fichier que tu n'as pas donné à l'éditeur de liens.
Attention aussi : l'ordre des bibliothèques est significatif avec g++. C-à-d que si la bibliothèque A précède la bibliothèque B dans la ligne de commande, l'éditeur de liens ne va pas chercher dans A pour résoudre des externes dans B.
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34