 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Seb Guest
|
Posted: Wed Jan 07, 2004 1:21 pm Post subject: Link entre C++ et C |
|
|
Bonjour,
J'ai dans mon code C++ :
extern "C" void MaFonction(int, int);
Dans un fichier ".c" j'ai le code de cette fonction. Dans mon makefile, les
deux sources sont compilés. Au moment de l'édition de lien j'ai ceci
undefined reference to 'MaFonction'
Normalement c'est la méthode pour utiliser du C dans du C++, je ne comprend
vraiment pas ce qu'il se passe. Auriez vous une idée.
PS : j'ai essayé au moment de l'édition de lien de changer l'ordre de mes .o
sans succès, et je compile mon fichier .c avec mon compilateur C++
Sebastien
|
|
| Back to top |
|
 |
Frédéric Gourul Guest
|
Posted: Wed Jan 07, 2004 1:41 pm Post subject: Re: Link entre C++ et C |
|
|
"Seb" <nospam (AT) yahoo (DOT) net> a écrit dans le message de
news:bth14v$oen$1 (AT) s1 (DOT) read.news.oleane.net...
| Quote: | Normalement c'est la méthode pour utiliser du C dans du C++, je ne
comprend
vraiment pas ce qu'il se passe. Auriez vous une idée.
|
c'est exact, mais je crois que les accolades sont obligatoires, je n'ai
jamais essayé de les omettres, mais je pense que le problème doit venir de
là...
extern "C" {
void MaFonction(int, int);
}
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Wed Jan 07, 2004 1:45 pm Post subject: Re: Link entre C++ et C |
|
|
"Seb" <nospam (AT) yahoo (DOT) net> writes:
| Quote: | Bonjour,
J'ai dans mon code C++ :
extern "C" void MaFonction(int, int);
Dans un fichier ".c" j'ai le code de cette fonction. Dans mon makefile, les
deux sources sont compilés. Au moment de l'édition de lien j'ai ceci
undefined reference to 'MaFonction'
Normalement c'est la méthode pour utiliser du C dans du C++, je ne comprend
vraiment pas ce qu'il se passe. Auriez vous une idée.
PS : j'ai essayé au moment de l'édition de lien de changer l'ordre de mes .o
sans succès, et je compile mon fichier .c avec mon compilateur C++
|
Es-tu sur qu'il te compile ton fichier .c comme etant du C et non du
C++. Sinon il ne faut pas le extern "C".
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
|
|
| Back to top |
|
 |
Seb Guest
|
Posted: Wed Jan 07, 2004 1:47 pm Post subject: Re: Link entre C++ et C |
|
|
"Frédéric Gourul" <fgourul.nospam (AT) 9online (DOT) fr> a écrit dans le message
news: bth2b6$i6c$1 (AT) aphrodite (DOT) grec.isp.9tel.net
| Quote: | "Seb" <nospam (AT) yahoo (DOT) net> a écrit dans le message de
news:bth14v$oen$1 (AT) s1 (DOT) read.news.oleane.net...
Normalement c'est la méthode pour utiliser du C dans du C++, je ne
comprend vraiment pas ce qu'il se passe. Auriez vous une idée.
c'est exact, mais je crois que les accolades sont obligatoires, je
n'ai jamais essayé de les omettres, mais je pense que le problème
doit venir de là...
extern "C" {
void MaFonction(int, int);
}
|
Je ne pense pas, Le "Stroustrup a un exemple sans les accolades en extern
"C".
J'ai quand meme essayé et le résultat est le meme : ça ne fonctionne pas.
|
|
| Back to top |
|
 |
Seb Guest
|
Posted: Wed Jan 07, 2004 1:49 pm Post subject: Re: Link entre C++ et C |
|
|
"Jean-Marc Bourguet" <jm (AT) bourguet (DOT) org> a écrit dans le message news:
[email]pxbvfnnq3cc.fsf (AT) news (DOT) bourguet.org[/email]
| Quote: | "Seb" <nospam (AT) yahoo (DOT) net> writes:
Bonjour,
J'ai dans mon code C++ :
extern "C" void MaFonction(int, int);
Dans un fichier ".c" j'ai le code de cette fonction. Dans mon
makefile, les deux sources sont compilés. Au moment de l'édition de
lien j'ai ceci
undefined reference to 'MaFonction'
Normalement c'est la méthode pour utiliser du C dans du C++, je ne
comprend vraiment pas ce qu'il se passe. Auriez vous une idée.
PS : j'ai essayé au moment de l'édition de lien de changer l'ordre
de mes .o sans succès, et je compile mon fichier .c avec mon
compilateur C++
Es-tu sur qu'il te compile ton fichier .c comme etant du C et non du
C++. Sinon il ne faut pas le extern "C".
A+
|
J'y ai pensé et j'ai changé le extern "C" en
extern void MaFonction( ...
et
void MaFonction
Et rien n'y fait.
|
|
| Back to top |
|
 |
Frédéric Gourul Guest
|
Posted: Wed Jan 07, 2004 2:03 pm Post subject: Re: Link entre C++ et C |
|
|
"Seb" <nospam (AT) yahoo (DOT) net> a écrit dans le message de
news:bth2lg$p9c$1 (AT) s1 (DOT) read.news.oleane.net...
| Quote: | Je ne pense pas, Le "Stroustrup a un exemple sans les accolades en extern
"C".
J'ai quand meme essayé et le résultat est le meme : ça ne fonctionne pas.
|
Tu as raison, j'ai dit une connerie. Alors le problème vient peut-être de
ton makefile. Montre la compilation des deux sources et l'édition de lien
pour voir. Il manque peut-être un simple "" à la fin d'une ligne... (ca
m'est arrivé plusieurs fois...)
A+
|
|
| Back to top |
|
 |
Seb Guest
|
Posted: Wed Jan 07, 2004 2:14 pm Post subject: Re: Link entre C++ et C |
|
|
"Seb" <nospam (AT) yahoo (DOT) net> a écrit dans le message news:
bth2q5$pf6$1 (AT) s1 (DOT) read.news.oleane.net
| Quote: | "Jean-Marc Bourguet" <jm (AT) bourguet (DOT) org> a écrit dans le message news:
[email]pxbvfnnq3cc.fsf (AT) news (DOT) bourguet.org[/email]
"Seb" <nospam (AT) yahoo (DOT) net> writes:
Bonjour,
J'ai dans mon code C++ :
extern "C" void MaFonction(int, int);
Dans un fichier ".c" j'ai le code de cette fonction. Dans mon
makefile, les deux sources sont compilés. Au moment de l'édition de
lien j'ai ceci
undefined reference to 'MaFonction'
Normalement c'est la méthode pour utiliser du C dans du C++, je ne
comprend vraiment pas ce qu'il se passe. Auriez vous une idée.
PS : j'ai essayé au moment de l'édition de lien de changer l'ordre
de mes .o sans succès, et je compile mon fichier .c avec mon
compilateur C++
Es-tu sur qu'il te compile ton fichier .c comme etant du C et non du
C++. Sinon il ne faut pas le extern "C".
A+
J'y ai pensé et j'ai changé le extern "C" en
extern void MaFonction( ...
et
void MaFonction
Et rien n'y fait.
|
Je viens de faire un petit test et effectivement ça ne fonctionne pas si je
compile tout avec g++. Mon erreur est là
Sébastien
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|