Créer .h ?

Résolu
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007 - 20 nov. 2005 à 21:44
Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006 - 25 nov. 2005 à 15:21
Bonjour à tous je voudrais créer un fichier .h sous turboc mais j'utilise surement pas la bonne methode

alors j'ai créer un fichier ICI.H et ICI.C que j'ai placé dans mon repertoire INCLUDE

ICI.C

#include "ICI.H"


void module_ICI(void)
{
int tmp;
tmp = 10;
printf("dd %d",tmp);
}

ICI.H

#ifndef TEST_H
#define TEST_H


void module_ICI(void);


#endif

ensuite j'ai créer un fichier TEST.C
#include "ICI.H"


main()
{
clrscr();
ici();
getch();
}

et quand je compile il me dit :

Linker error : Undefined symbol '_ici' in module TEST.C

pourriez vous me dire pourquoi ? ou comment je dois faire pour que cela fonctionne ?

Merci de votre aide

DOS-chkdsk-2K

14 réponses

Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006
22 nov. 2005 à 12:06
arf.. j'avais pas bien lu... je crois que magic_nono a déjà donné la bonne réponse à ton problème.



en fait dans ton fichier test.c inclue ici.h jusque là tout va bien. Dans ici.h il y a bien le prototype de ta fonction :



void module_ICI(void);

[auteurdetail.aspx?ID= 180080 ]
Seulement voilà, il y a un souci, tu ne lui dis pas ce qu'il doit faire dans ta fonction. Tu l'as décrite dans ici.c or ce fichier n'est peut être pas inclu à ton projet. Voilà qui explique ton erreur de link.



pour résoudre ce problème 2 possibilités :



la moins bonne :

1) Dans ton fichier "ici.h" tu fais :



#ifndef TEST_H
#define TEST_H

#include <stdio.h> // à ne pas oublier sinon ta fonction printf ne passera pas


void module_ICI(void)
{
int tmp;
tmp = 10;
printf("dd %d",tmp);
}


#endif



c'est pas franchement la meilleure methode...



sinon :

2) voici les fichiers :



ici.h



#ifndef TEST_H

#define TEST_H



void module_ICI(void);



#endif



ici.c



#include <stdio.h>

#include "ici.h"



/* a condition que ton ici.h soit dans le meme dossier sinon il faut

indiquer le chemin complet */



void module_ICI(void)

{

int tmp;

tmp = 10;

printf("dd %d",tmp);

}



test.c



#include "ici.h"



/* à condition que ton fichier ici.h se trouve

dans le même dossier, sinon il faudra mettre le chemin complet*/



main()

{

clrscr();

module_ICI();

getch();

}





il faut ensuite que tu crèes un projet dans lequel il faut inclure ici.c et test.c



tu compiles et ça doit tourner



voilà, j'espère que ça t'aide



DvdMizo
3
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
20 nov. 2005 à 22:17
je dirai d'abord qu'il manque les includes stdio.h



ensuite, tu n'as pas du inclure dans le projet tous tes fichiers



sinon, pas de raison que cela ne tourne pas.
___________________________________________________________
Magicalement
Nono
0
cs_magma Messages postés 198 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 18 mars 2011
20 nov. 2005 à 22:35
main()
{
clrscr();
module_ICI();
getch();
}
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
20 nov. 2005 à 22:37
merci magma...



lecture en diagonale/// pas que du bon
++

Nono
0

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

Posez votre question
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007
20 nov. 2005 à 23:47
Bonsoir magic_Nono et magma

Non il ne veut pas du tout même avec module_ICI();
il me donne comme erreur => Linker error : Undefined symbol '_module_ici' in module TEST.C.
L'endroit ou je l'ai placé est il le bon ? cad dans "M:\TURBOC\TC201\INCLUDE"

Merci pour votre aide

DOS-chkdsk-2K
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
21 nov. 2005 à 00:04
tous tes sources sont au mm endroit?

___________________________________________________________
Magicalement
Nono
0
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007
21 nov. 2005 à 00:12
Non j'ai placé le fichier ICI.H et ICI.C dans le repertoire "M:\TURBOC\TC201\INCLUDE" et mon fichier TEST.C est dans le repertoire "M:\TURBOC\TC201"

DOS-chkdsk-2K
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
21 nov. 2005 à 00:16
#include "ICI.H"



aurait du passer

il faut que le ici.c soit bien ds le projet !



que ça ai créé un ici.o



si C pas le cas, vois la config de tc (je l'ai pas utilisé depuis au moins six ans, alors je C plus.



essaie également

#include "include/ICI.H"


___________________________________________________________
Magicalement
Nono
0
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007
21 nov. 2005 à 10:27
Bonjour à tous,

Il ne veut pas du tout ... "ici.o" c'est pour le cpp et pas pour le c ?

Est-ce que quelqu'un pourrait m'envoyer un p'tit exemple qui fonctionne ?

Merci de votre aide

DOS-chkdsk-2K
0
Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006
21 nov. 2005 à 12:26
salut,

plusieurs possibilités à mon avis :



1) vu que ton fichier est sur "M:\TURBOC\TC201\INCLUDE" qui je suppose
doit être le dossier où se trouve les autres .h de turbo c ça doit
pouvoir marcher en écrivant :



#include <ICI.H>



2) tu peux aussi préciser le chemin direct en faisant :



#include "M:\TURBOC\TC201\INCLUDE\ICI.H"


3) ou bien tu mets ton .h dans le même dossier que ton .c et tu écris :



#include "ICI.H"


DvdMizo
0
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007
21 nov. 2005 à 22:55
Salut DvdMizo,

J'avais déjà essayer en mettant tout dans mon repertoire "M:\TURBOC\TC201" j'ai aussi essayer de le faire en "C:\TURBOC\TC201" en indiquant le nom complet .... mais pas moyen ... il ne trouve pas mon " module_ICI" Vu l'erreur qu'il me donne de "link error ... " ? j'ai essayer aussi le "ICI.H" ou mais il ne veut vraiement rien savoir

:'(

DOS-chkdsk-2K
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
22 nov. 2005 à 17:02
ok avec DvdMizo


___________________________________________________________
Magicalement
Nono
0
CHKDSK2K Messages postés 144 Date d'inscription mardi 2 septembre 2003 Statut Membre Dernière intervention 18 septembre 2007
22 nov. 2005 à 20:09
Lu j'ai du utiliser la 1er methode car la 2ème veut pas :s

Comment tu fait pour créer un projet avec turbo c ? ce n'est pas du cpp ...

Encore merci de votre aide la 1er methode fonctionne bien ;) elle a quel inconvégniant ?

DOS-chkdsk-2K
0
Dvdmizo Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 3 mai 2006
25 nov. 2005 à 15:21
Pour créer un projet en turbo c, je sais pas.. ça dépend de ta version.
Sinon pour les "inconvénient" c'est pas vraiment des inconvénients mais c'est juste "moins propre" d'écrire du code dans un .h

ça ne devrait servir qu'à des déclarations ou des prototypes.



ceci-dit, ça marche quand même, alors bon....


DvdMizo
0
Rejoignez-nous