| [Dll en C] Ecrire-lire dans fichier texte en dll ? | |
|
|
Auteur | Message |
---|
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 13 Fév 2008 - 13: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 Banni(e)
Messages : 2002
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 6:37 | |
| Premièrement, lache dev-c++ et prend codeblock
deuxièment, quels erreurs ? |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 6:44 | |
| Premierement, garde dev cpp et fout codeblock en l air :p Deuxiemement, qu'indique le debuger? |
|
| |
gparent Nouveau
Messages : 2 Projet Actuel : Procastination
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 6: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
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 7: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... |
|
| |
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 10: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
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 10: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... |
|
| |
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 11: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 :gniah: ). 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
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 12: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. |
|
| |
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 14 Fév 2008 - 13: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'
Messages : 5340 Localisation : **I move away from the mic to breathe in
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Jeu 21 Fév 2008 - 13:41 | |
| Et pourquoi tu lis pas tes erreurs à la place ? |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév 2008 - 8:56 | |
| lol c'est vrai que je fqis que lui redire ce qui est marqué, hein |
|
| |
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév 2008 - 9: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'
Messages : 5340 Localisation : **I move away from the mic to breathe in
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév 2008 - 14: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 |
|
| |
Devil37 Utilisateur confirmé: Rang *****
Messages : 1815
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Ven 22 Fév 2008 - 15: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'
Messages : 5340 Localisation : **I move away from the mic to breathe in
| |
| |
notiz85 Utilisateur confirmé: Rang *****
Messages : 2004 Localisation : Vendée Projet Actuel : Moteur d'ombre pour un projet plateforme 2D...
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 27 Fév 2008 - 11: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
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? Mer 27 Fév 2008 - 11:28 | |
| |
|
| |
Contenu sponsorisé
| Sujet: Re: [Dll en C] Ecrire-lire dans fichier texte en dll ? | |
| |
|
| |
| [Dll en C] Ecrire-lire dans fichier texte en dll ? | |
|