Probleme de linkage bizarre

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 5 mai 2006 à 11:36
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 - 5 mai 2006 à 12:12
Bonjour,
j'ai un probleme assez bizarre, comme un exemple vaut mieux qu'un long discour, voici un exemple de ce que j'ai:

<hr size="2" width="100%">//truc.h

#ifndef TRUC_H
#define TRUC_H

Class Truc
{
Truc();
};

#endif
<hr size="2" width="100%">
<hr size="2" width="100%">// truc.cpp

#include "truc.h"
Truc::Truc()
{
...
}
<hr size="2" width="100%">
<hr size="2" width="100%">// main.cpp

#include "truc.h"
int main ()
{
Truc t;

return 0;
}
<hr size="2" width="100%">
Ca compile sans problème, mais au linkage, j'ai un beau 'undifined reference to Truc::Truc()'.
J'avais jamais vu ca avant, savez vous d'ou ca peut venir (truc.cpp est pourtant bien compilé !) ?
PS : en rajoutant #include truc.cpp dans main.cpp ca marche, mais bon

Quelqu'un peut-il m'aider ?

Merci

TuRn3r

7 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
5 mai 2006 à 11:42
#ifndef TRUC_H
#define TRUC_H

Class Truc
{
public :
Truc();
};

#endif
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
5 mai 2006 à 11:43
Bonjour,



le message voudrais dire que "truc.o" n'est pas lié au projet.

Donc soit ton fichier n'est pas ajouté à ton projet dans ton IDE, si tu
en utilise un. Soit ton makefile est mal fait, car il ne prend pas en
compte "truc.o".

Cordialement

Fred Cailleau-Lepetit
Soft In The Box
Forum wxWidgets en français
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
5 mai 2006 à 11:45
Non, ca change rien au problème.
De plus, ca marche en incluant le .cpp
Merci quand meme !

TuRn3r
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 11:48
class Truc
{
public:
Truc();
};

// truc.cpp

Truc::Truc()
{
exit(0);
}

// main.cpp

int main ()
{
Truc t;

return 0;
}

ça marche chez moi. Et chez toi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
5 mai 2006 à 11:48
J'utilise Code::Blocks et je n'ai jamais eut de problèmes de ce style avant.
"le message voudrais dire que "truc.o" n'est pas lié au projet" -> Oui c'est également l'impression que j'ai, pourtant, j'ai toujours procédé de la même facon sans le moindre problème jusque la.

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
5 mai 2006 à 11:50
Non, ca ne marche pas, ce n'est pas une erreur de syntaxe vu que ca fonctionne en incluant le point cpp.

fredcl est sur la bonne voix a mon avis .

TuRn3r
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
5 mai 2006 à 12:12
désolé je soutiens qu'il y a une erreur de syntaxe. Je viens d'installer code::Blocks et j'y ait compilé ton source.
Le message d'erreur est sans appel
Error : 'Class' does not have a type name.

Le mot réservé est class et non Class

Error : Truc:Truc() is private :

Tu as oublié public:

NB. : Code::Blocks est très joli mieux que devcpp en tout cas
0
Rejoignez-nous