PB d'E/S fichier avec une DLL

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010 - 15 nov. 2003 à 16:44
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 17 nov. 2003 à 21:08
Je cherche a faire une DLL en C, dans la quelle je puisse faire des E/S fichier.
Mon probleme est le suivant : la fonction fopen refuse de fonctionner : elle renvoi systematiquement NULL, alors que le fichier que je cherche a ouvrir existe. Je en comprends pas pourquoi.
J'ai teste ma fonction dans un executable, tout fonctionne et lorsque j'exportre le code dans ma DLL, cela ne fonctionne plus.
Quelqu'un saurait il me conseiller.
D'avance Merci.

-*- switch -*-

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
16 nov. 2003 à 18:48
:big) Neodante :big)

Quel est ton code ??? Pour moi c OK donc dois y avoir un prob dans ton code ... ;)
@+
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 nov. 2003 à 17:53
Slt,
Tout d'abord merci beaucoup de preter un peu d'attention a mon probleme.

mon fichier wavedll.cpp (une partie seulement en fait)


#include "stdafx.h"
#include "wavedll.h"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

extern "C" __declspec(dllexport) unsigned int file_length(char *file_name,int retour)
{
Wave_File file;
int i,j=0;
FILE *fd;

if(fd=fopen("essai.txt","wb"))
{
read_RIFF_Chunk(&file,fd);
read_FMT_Chunk(&file,fd);
read_DATA_Chunk(&file,fd);
                                fclose(fd);
}
else
{
strcpy(file.File_Name,"ERREUR");
}
file.RIFF=(RIFF_Chunk *)malloc(sizeof(RIFF_Chunk));
file.FMT=(FMT_Chunk *)malloc(sizeof(FMT_Chunk));
file.DATA=(DATA_Chunk *)malloc(sizeof(DATA_Chunk));
open_file(&file);
if(!strcmpi(file.File_Name,"ERREUR"))
{
retour= fade_max_length(file);
}
else
{
//	retour=fade_max_length(&file);
retour=-1;
}

return (retour);
}



Le probleme est que ma fonction renvoi systematiquement -1, alors meme que les fichiers que je lui transmet existent.
Je n'arrive pas a comprendre.

-*- switch -*-
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 nov. 2003 à 17:56
dans mon code, il fallait lire dans les dernieres lignes :
if(!strcmpi(file.File_Name,"ERREUR"))
{
retour= fade_max_length(&file);
}
else
{
retour=-1;
} 

return (retour);
}



je me suis trompé en recopiant
-*- switch -*-
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
17 nov. 2003 à 21:08
:big) Neodante :big)

Pour moi la seule chose d'où cela peut provenir sont tes fonctions read_X.. et open_file. sinon le reste me semble correct !

Cependant as-tu essayer avec des noms de fichier absolus...
;) et non des relatifs ??? :big)

En revanche juste pour te faciliter l'utilisation de ta DLL met un truc du genre :
#ifdef DLL_EXPORT
#define LINK_DLL __declspec(dllexport)
#else
#define LINK_DLL __declspec(dllimport)
#endif

@+
0
Rejoignez-nous