[C/C++] Comment mélanger C et C++ ?
Résolu
Delta9_THC
Messages postés
65
Date d'inscription
Statut
Membre
Dernière intervention
-
Delta9_THC Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Delta9_THC Messages postés 65 Date d'inscription Statut Membre Dernière intervention -
Salut à tous,
Voilà j'ai 2 fichiers qui gèrent les liste chainées simples (ListeSimple.c et ListeSimple.h) écrits en C "pur". Lorsque je fais une directive include dans un fichier test.C (en C++) et que j'essaie d'appeler une fonction implémentée dans le fichier ListeSimple.c la compilation me génère une erreur :
Alors que les fonctions en question "sll_new()" et "sll_insert()" sont bien présentes dans le fichier !
Je galère sur cette erreur (toute bête j'espère) depuis un moment et je vois pas d'où ça peut venir, à part une subtilité à faire pour mélanger C et C++.
Que ceux qui ont une idée m'apporte un peu d'espoir svp :o)
Voilà j'ai 2 fichiers qui gèrent les liste chainées simples (ListeSimple.c et ListeSimple.h) écrits en C "pur". Lorsque je fais une directive include dans un fichier test.C (en C++) et que j'essaie d'appeler une fonction implémentée dans le fichier ListeSimple.c la compilation me génère une erreur :
test.o : Dans la fonction "main()":/[...]/src/ListeMotsTries.C:14: référence indéfinie vers « sll_new() » test.o : Dans la fonction "main()":/[...]/src/ListeMotsTries.C:26: référence indéfinie vers « sll_insert(sll*, void*)»
Alors que les fonctions en question "sll_new()" et "sll_insert()" sont bien présentes dans le fichier !
Je galère sur cette erreur (toute bête j'espère) depuis un moment et je vois pas d'où ça peut venir, à part une subtilité à faire pour mélanger C et C++.
Que ceux qui ont une idée m'apporte un peu d'espoir svp :o)
1 réponse
1) Essaye dans tes fichiers c++ de mettre :
2) Si tu utilises un Makefile, vérifie qu'il correct (ie que tu linkes bien tous les fichiers compilés pour générer l'éxecutable final).
3) En général un header s'écrit sous la forme :
Vérifie que le verrou du .h que tu aimerais inclure n'a pas été défini dans un autre fichier, par exemple suite à un copier coller malheureux.
Bonne chance
extern "C"{ #include "monheader.h" }
2) Si tu utilises un Makefile, vérifie qu'il correct (ie que tu linkes bien tous les fichiers compilés pour générer l'éxecutable final).
3) En général un header s'écrit sous la forme :
#ifndef VERROU #define VERROU //.... #endif
Vérifie que le verrou du .h que tu aimerais inclure n'a pas été défini dans un autre fichier, par exemple suite à un copier coller malheureux.
Bonne chance
Dans tous les cas merci tu as tapé juste :o)