| [Dll en C] Ecrire-lire dans fichier texte en dll ? | |
|
|
| Auteur | Message |
|---|
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 13 Fév - 14:57 | |
| Salut à tous,
Voilà je vais me mettre au C ( sans laisser tomber GM bien sûr ), et pour m'exercer je voulais faire une dll de lecture-écriture. Je travaille sous Dev-C++.
Donc pour tester je compile et il me met plein d'erreurs  Je suis débutant en C, donc comment en arrive à avoir le format .dll ? Une compilation fait des .exe c'est ça ?
Codes:
dll.h:
| Spoiler: | | | | Citation: | #ifndef _DLL_H_ #define _DLL_H_
__declspec (dllexport) int WriteFile (char, char);//WriteFile(file,text); __declspec (dllexport) char ReadFile (char);//ReadFile(file);
#endif |
|
dllmain.c:
| Spoiler: | | | | Citation: | #include "dll.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #define W_MAX 1024
__declspec (dllexport) int WriteFile (char File_ , char Text_) { FILE* file = NULL; file = fopen(File_,"w+"); if(file != NULL) {//Success: Returns "File wrote" fputs(Text_,file); fclose(file); return 110; } else {//Error: Returns "Can't open file" return 100; } } __declspec (dllexport) char ReadFile (char File_) { File* file = NULL; char str[W_MAX] = ""; char end_str = ""; file = fopen(File_,"r"); if(file != NULL) {//Success: Returns "File read" while(fgets(str, W_MAX, file) != NULL) { end_str= end_str + str; } fclose(file); return end_str; } else {//Error: Returns "File doesn't exists" return "200"; } }
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; }
/* Returns TRUE on success, FALSE on failure */ return TRUE; }
|
|
Est-ce que quelqu'un pourrait me corriger et expliquer mes erreurs ? Si j'ai simplement une correction, je n'en retiendrai pas grand chose.
Merci !! _________________
|
|
 | |
Blizter Utilisateur confirmé: Rang *****
Inscrit le : 29 Aoû 2005 Messages : 2004 : ────────── : Avancement :
  (0/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 7:37 | |
| Premièrement, lache dev-c++ et prend codeblock
deuxièment, quels erreurs ? |
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 7:44 | |
| Premierement, garde dev cpp et fout codeblock en l air :p Deuxiemement, qu'indique le debuger? _________________ Click for a free cookie |
|
 | |
gparent Nouveau
Inscrit le : 22 Déc 2007 Messages : 2 : ────────── : Projet Actuel : Procastination Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 7:52 | |
| | M@d_Doc a écrit: | Premierement, garde dev cpp et fout codeblock en l air :p Deuxiemement, qu'indique le debuger? |
Avoir le choix entre un IDE qui n'a pas été updater depuis 3 ans avec un vieux compileur, ou Code::Blocks qui a une nightly build au chaque quelque jours, moi j'prendrais C::B...
| Code: | dll.c:24: error: 'File' undeclared (first use in this function) dll.c:24: error: (Each undeclared identifier is reported only once dll.c:24: error: for each function it appears in.) dll.c:24: error: 'file' undeclared (first use in this function) dll.c:25: error: ISO C90 forbids mixed declarations and code dll.c:26: error: initialization makes integer from pointer without a cast dll.c:27: error: passing argument 1 of 'fopen' makes pointer from integer without a cast dll.c:32: error: assignment makes integer from pointer without a cast dll.c:39: error: return makes integer from pointer without a cast |
|
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 8:34 | |
| bon, c'est vrai que devcpp se fait vieux, mais bon... C'est pas pour rien qu il reste utilisé par tant de gens... _________________ Click for a free cookie |
|
 | |
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 11:16 | |
| 21 erreurs au total
| Spoiler: | | | Compilateur: Default compiler Building Makefile: "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" Exécution de make... make.exe -f "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" all gcc.exe -c dllmain.c -o dllmain.o -I"D:/Dev-Cpp/include" -DBUILDING_DLL=1
In file included from D:/Dev-Cpp/include/windows.h:50, from dllmain.c:3: D:/Dev-Cpp/include/winbase.h:1752: error: conflicting types for 'ReadFile' dll.h:5: error: previous declaration of 'ReadFile' was here D:/Dev-Cpp/include/winbase.h:1752: error: conflicting types for 'ReadFile' dll.h:5: error: previous declaration of 'ReadFile' was here D:/Dev-Cpp/include/winbase.h:1924: error: conflicting types for 'WriteFile' dll.h:4: error: previous declaration of 'WriteFile' was here D:/Dev-Cpp/include/winbase.h:1924: error: conflicting types for 'WriteFile' dll.h:4: error: previous declaration of 'WriteFile' was here
dllmain.c:9: error: conflicting types for 'WriteFile' D:/Dev-Cpp/include/winbase.h:1924: error: previous declaration of 'WriteFile' was here dllmain.c:9: error: conflicting types for 'WriteFile' D:/Dev-Cpp/include/winbase.h:1924: error: previous declaration of 'WriteFile' was here dllmain.c: In function `WriteFile': dllmain.c:11: warning: passing arg 1 of `fopen' makes pointer from integer without a cast dllmain.c:14: warning: passing arg 1 of `fputs' makes pointer from integer without a cast
dllmain.c: At top level: dllmain.c:25: error: conflicting types for 'ReadFile' D:/Dev-Cpp/include/winbase.h:1752: error: previous declaration of 'ReadFile' was here dllmain.c:25: error: conflicting types for 'ReadFile' D:/Dev-Cpp/include/winbase.h:1752: error: previous declaration of 'ReadFile' was here dllmain.c: In function `ReadFile': dllmain.c:26: error: `File' undeclared (first use in this function) dllmain.c:26: error: (Each undeclared identifier is reported only once dllmain.c:26: error: for each function it appears in.) dllmain.c:26: error: `file' undeclared (first use in this function)
dllmain.c:28: warning: initialization makes integer from pointer without a cast dllmain.c:29: warning: passing arg 1 of `fopen' makes pointer from integer without a cast dllmain.c:34: warning: assignment makes integer from pointer without a cast dllmain.c:41: warning: return makes integer from pointer without a cast
make.exe: *** [dllmain.o] Error 1
Exécution terminée |
_________________
|
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 11:36 | |
| ben les premieres erreurs concernent des fonctions/variables deja declarees que tu essaye de re-declarer... Verifie deja ca... Fait gaffe aux majuscules/minuscules (si possible garde les variables en minuscules et garde les majuscule pour les structures) File et file non pas ete declarees, ou alors pas au bon endroit... _________________ Click for a free cookie |
|
 | |
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 12:36 | |
| Ok, merci ! J'ai déclaré la variable file à l'extérieur des fonctions et une seule fois ( je pensais qu'il fallait re-déclarer dans les fonctions, allez savoir pourquoi ).
J'ai corrigé mes majuscules, minuscules, je m'organise un peu 
Arf, plus que 11 erreurs !!
| Spoiler: | | | Compilateur: Default compiler Building Makefile: "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" Exécution de make... make.exe -f "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" all gcc.exe -c dllmain.c -o dllmain.o -I"D:/Dev-Cpp/include" -DBUILDING_DLL=1
dllmain.c: In function `WriteFile': dllmain.c:11: warning: passing arg 1 of `fopen' makes pointer from integer without a cast
dllmain.c:14: warning: passing arg 1 of `fputs' makes pointer from integer without a cast
dllmain.c: In function `ReadFile': dllmain.c:27: warning: initialization makes integer from pointer without a cast dllmain.c:28: warning: passing arg 1 of `fopen' makes pointer from integer without a cast
dllmain.c:33: warning: assignment makes integer from pointer without a cast dllmain.c:40: warning: return makes integer from pointer without a cast
dllmain.c: At top level: dllmain.c:44: error: syntax error before "APIENTRY" dllmain.c:44: error: syntax error before "hInst" dllmain.c: In function `DllMain': dllmain.c:48: error: `reason' undeclared (first use in this function) dllmain.c:48: error: (Each undeclared identifier is reported only once dllmain.c:48: error: for each function it appears in.) dllmain.c:50: error: `DLL_PROCESS_ATTACH' undeclared (first use in this function)
dllmain.c:53: error: `DLL_PROCESS_DETACH' undeclared (first use in this function) dllmain.c:56: error: `DLL_THREAD_ATTACH' undeclared (first use in this function) dllmain.c:59: error: `DLL_THREAD_DETACH' undeclared (first use in this function) dllmain.c:64: error: `TRUE' undeclared (first use in this function)
make.exe: *** [dllmain.o] Error 1
Exécution terminée
|
C'est quoi le bordel avec les fonctions de texte ?? Ah oui, j'ai enlevé le #include <windows.h>, ça m'a enlevé 6 erreurs mais il fallait pas ?
Voilà mon code actuel :
| Spoiler: | | | /* Replace "dll.h" with the name of your header */ #include "dll.h" #include <stdio.h> #include <stdlib.h> #define W_MAX 1024
FILE* file = NULL;
__declspec (dllexport) int WriteFile (char path_ , char text_) { file = fopen(path_,"w+"); if(file != NULL) {//Success: Returns "File wrote" fputs(path_,file); fclose(file); return 110; } else {//Error: Returns "Can't open file" return 100; } }
__declspec (dllexport) char ReadFile (char path_) { char str[W_MAX] = ""; char end_str = ""; file = fopen(path_,"r"); if(file != NULL) {//Success: Returns "File read" while(fgets(str, W_MAX, file) != NULL) { end_str= end_str + str; } fclose(file); return end_str; } else {//Error: Returns "File doesn't exists" return "200"; } }
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break;
case DLL_PROCESS_DETACH: break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break; }
/* Returns TRUE on success, FALSE on failure */ return TRUE; }
|
Merci de m'avoir aidé  _________________
|
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 13:37 | |
| les warnings : regarde seulement quand il y a plus d'erreurs et si les resultats ne sont pas ceux attendus. dllmain.c:44: error: syntax error before "APIENTRY" bool pas BOOL (un type est toujours en minuscules, ex int, void, bool, char etc.) HINSTANCE hInst -> c'est quoi HINSTANCE? et entre les deux il y a rien? genre des () {} [] ; , ou qqc comme ca.... reason est pas declaree true, pas TRUE Croi moi, ecrit en minuscule tout le temps, t'aura moins de problemes. _________________ Click for a free cookie |
|
 | |
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév - 14:26 | |
| Tout ça c'est généré automatiquement, moi je n'y ait pas touché ! Normalement ça marche avec la tut-dll c'est nikel ...
EDIT: J'ai remis le #include <windows.h> et j'ai des erreurs différentes:
| Spoiler: | | | Compilateur: Default compiler Building Makefile: "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" Exécution de make... make.exe -f "D:\Mes Documents\Fallingame\Utilities\DLL - W-R File\Makefile.win" all gcc.exe -c dllmain.c -o dllmain.o -I"D:/Dev-Cpp/include" -DBUILDING_DLL=1
In file included from D:/Dev-Cpp/include/windows.h:50, from dllmain.c:3: D:/Dev-Cpp/include/winbase.h:1752: error: conflicting types for 'ReadFile' dll.h:5: error: previous declaration of 'ReadFile' was here D:/Dev-Cpp/include/winbase.h:1752: error: conflicting types for 'ReadFile' dll.h:5: error: previous declaration of 'ReadFile' was here
D:/Dev-Cpp/include/winbase.h:1924: error: conflicting types for 'WriteFile' dll.h:4: error: previous declaration of 'WriteFile' was here D:/Dev-Cpp/include/winbase.h:1924: error: conflicting types for 'WriteFile' dll.h:4: error: previous declaration of 'WriteFile' was here
dllmain.c:11: error: conflicting types for 'WriteFile' D:/Dev-Cpp/include/winbase.h:1924: error: previous declaration of 'WriteFile' was here
dllmain.c:11: error: conflicting types for 'WriteFile' D:/Dev-Cpp/include/winbase.h:1924: error: previous declaration of 'WriteFile' was here
dllmain.c: In function `WriteFile': dllmain.c:12: warning: passing arg 1 of `fopen' makes pointer from integer without a cast
dllmain.c:15: warning: passing arg 1 of `fputs' makes pointer from integer without a cast
dllmain.c: At top level: dllmain.c:26: error: conflicting types for 'ReadFile' D:/Dev-Cpp/include/winbase.h:1752: error: previous declaration of 'ReadFile' was here dllmain.c:26: error: conflicting types for 'ReadFile' D:/Dev-Cpp/include/winbase.h:1752: error: previous declaration of 'ReadFile' was here dllmain.c: In function `ReadFile': dllmain.c:28: warning: initialization makes integer from pointer without a cast dllmain.c:29: warning: passing arg 1 of `fopen' makes pointer from integer without a cast dllmain.c:34: warning: assignment makes integer from pointer without a cast dllmain.c:41: warning: return makes integer from pointer without a cast
make.exe: *** [dllmain.o] Error 1
Exécution terminée
|
_________________
|
|
 | |
Gab666 Modérateur 'Zut' & 'Ablationer'

Age : 17 Inscrit le : 02 Aoû 2005 Messages : 5273 Localisation : **I move away from the mic to breathe in : ────────── : Avancement :
  (0/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 21 Fév - 14:41 | |
| Et pourquoi tu lis pas tes erreurs à la place ? _________________ PIS MANIAC PREND DES BAINS ! |
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév - 9:56 | |
| lol c'est vrai que je fqis que lui redire ce qui est marqué, hein  _________________ Click for a free cookie |
|
 | |
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév - 10:47 | |
| | Gab666 a écrit: | | Et pourquoi tu lis pas tes erreurs à la place ? |
Parce que je ne comprends pas ces erreurs là, c'est tout. Quand je démarre un projet de dll, les trucs en bas sont générés automatiquement ... _________________
|
|
 | |
Gab666 Modérateur 'Zut' & 'Ablationer'

Age : 17 Inscrit le : 02 Aoû 2005 Messages : 5273 Localisation : **I move away from the mic to breathe in : ────────── : Avancement :
  (0/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév - 15:25 | |
| | Damator a écrit: | | Gab666 a écrit: | | Et pourquoi tu lis pas tes erreurs à la place ? |
Parce que je ne comprends pas ces erreurs là, c'est tout. Quand je démarre un projet de dll, les trucs en bas sont générés automatiquement ... |
bah, c'est pas compliqué tu lis et ça te dit les erreurs exemple
| Citation: | D:/Dev-Cpp/include/winbase.h:1752: error: conflicting types for 'ReadFile' dll.h:5: error: previous declaration of 'ReadFile' was here |
winbase.h1752: Erreur: Conflit de types pour readfile dll.h5: Déclaration précédente ici
Au cas ou tu le saurais pas il y a déja une fonction ReadFile dans windows.h _________________ PIS MANIAC PREND DES BAINS ! |
|
 | |
Devil37 Utilisateur confirmé: Rang *****

Age : 15 Inscrit le : 20 Aoû 2006 Messages : 1704 Localisation : J'ai plus d'argent : ────────── : Projet Actuel : Unvanquished Territories Avancement :
   (5/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév - 16:15 | |
| | Citation: | | Au cas ou tu le saurais pas il y a déja une fonction ReadFile dans windows.h |
A bah voilà merci, ça ça m'aide  _________________
|
|
 | |
Gab666 Modérateur 'Zut' & 'Ablationer'

Age : 17 Inscrit le : 02 Aoû 2005 Messages : 5273 Localisation : **I move away from the mic to breathe in : ────────── : Avancement :
  (0/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mar 26 Fév - 14:02 | |
| | Damator a écrit: | | Citation: | | Au cas ou tu le saurais pas il y a déja une fonction ReadFile dans windows.h |
A bah voilà merci, ça ça m'aide  |
Une petite recherche ça ne fait jamais de tord, je ne fais que te redire ce que le compilateur te dit  _________________ PIS MANIAC PREND DES BAINS ! |
|
 | |
notiz85 Utilisateur confirmé: Rang *****

Age : 14 Inscrit le : 05 Avr 2006 Messages : 1993 Localisation : De retour ici, avec un jeu... : ────────── : Projet Actuel : Tenu Secret Avancement :
   (2/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 27 Fév - 12:27 | |
| Le truc c'est juste de bien savoir comment lire... [mode suppose ON] dll.h:5: 5 c'est la ligne dans dll.h ? (alors non)
pareil pour winbase.h:1752: 1752 la ligne dans winbase.h ? (c'est sa ou c'est complètement autre chose ?) [mode suppose OFF] _________________

 |
|
 | |
M@d_Doc Modérateur 'Programmation'

Age : 18 Inscrit le : 12 Fév 2005 Messages : 4267 Localisation : 47°44'8.04 : ────────── : Projet Actuel : trouver un contrat Avancement :
  (100/100)
 | Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 27 Fév - 12:28 | |
| That's it. _________________ Click for a free cookie |
|
 | |
| [Dll en C] Ecrire-lire dans fichier texte en dll ? | |
|