Bonjour,

Je cherche à comprendre ce que je fais. J'ai cree un dll mfc qui permettera de retourner la date et heure courante. Voyant que le premier cas ne marchait pas, j'ai modifié cette fonction et là ça fonctionne bien !
Est ce que c'est un problème de partage mémoire dll / programme ?

1er cas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
__declspec(dllexport) void JGetCurrentDateTime(char* TimeFormat, char* retValue)
{
   char str_date_time[50];
   time(&n_DateTime);
   strftime(str_date_time,50,n_TimeFormat,localtime(&n_DateTime));
   retValue = (char*) malloc(strlen(str_date_time) + 8);
   strcpy(retValue,str_date_time);
}
2ieme cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
__declspec(dllexport) char* JGetCurrentDateTime2(char* TimeFormat)
{
   char str_date_time[50];
   time(&n_DateTime);
   strftime(str_date_time,50,n_TimeFormat,localtime(&n_DateTime));
   char *retValue;
   retValue = (char*) malloc(strlen(str_date_time) + 8);
   strcpy(retValue,str_date_time);
   return retValue;
}
Dans le second cas, le programme principale reçoit bien la valeur, alors que dans le premier cas la valeur de retour reste toujours vide.

Est ce que quelqu'un aurait un expliquation ?

Merci d'avance.