Hello,

J'ai une dll à réaliser. Avec quelques tuto et VC++, j'ai réussi à faire une dll qui me retourne un entier, aucun problème, tout va bien.

Or, j'ai voulu la modifier pour qu'elle me retourne une chaine, mais je ne m'en sors vraiment pas. Je merdoye dans les pointeurs à coup sûr. Pourriez-vous m'aiguiller svp ?

Le code qui suit est le seul qui me retourne quelquechose sans planter. Évidemment, ce qui est retourné n'est pas de la forme souhaitée.

Je suis sensée me retrouver avec un date formatée AAAAMMJJHHSSMM, mais je me retrouve avec une suite de nombre incohérents, que j'ai interprété comme étant une @ mémoire. (quoi que j'en doute car ce cnombre est toujours identique)

Alors comment my' prendre ? transtyper ma chaine en entier ? Trouver une soluce pour passer mon char en paramètre ?

Je suis sûr que mon erreur est toute bête ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// dllmain.cpp : Définit le point d'entrée pour l'application DLL.
#include "stdafx.h"
#include "time.h"
#include <iostream>
 
 
extern "C" __declspec(dllexport)void retourne_ts(int parametre, char TimestampARecuperer);
 
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
 
 
void retourne_ts(int parametre, char TimestampARecuperer)
{
	time_t timestamp;
    struct tm * t;
 
    timestamp = parametre;
    t = localtime(&timestamp);
 
	int jour[2] = {t->tm_mday};
	int mois[2] = {1+t->tm_mon};
	int annee[4] = {1900+t->tm_year};
	int heure[2] = {t->tm_hour};
	int minutes[2] = {t->tm_min};
	int secondes [2] = {t->tm_sec};
	char separateur [] = "/";
	char Timestampconcatene[15]; 
	sprintf(Timestampconcatene, "%02u%02u%02u%02u%02u%02u",*annee, *mois, *jour , *heure, *minutes, *secondes);
	TimestampARecuperer = *Timestampconcatene;
}
Et voici le code dont je me suis inspiré (vous noterez l'utilisation de '&' dans les paramètres int des fonctions. Chose que je n'arrive pas à réutiliser avec les char

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// dllmain.cpp : Définit le point d'entrée pour l'application DLL.
#include "stdafx.h"
 
// This function is used to calculate the total area of a parallelepiped rectangle
int BoxArea(int L, int H, int W);
// This function is used to calculate the volume of a parallelepiped rectangle
int BoxVolume(int L, int H, int W);
// This function is used to get the dimensions of a rectangular parallelepiped
// calculate the area and volume, then pass the calculated values to the
// function that called it.
extern "C" __declspec(dllexport)void BoxProperties(int Length, int Height,
                                    int Width, int& Area);
 
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}
int BoxArea(int L, int H, int W)
{
    return 2 * ((L*H) + (L*W) + (H*W));
}
 
int BoxVolume(int L, int H, int W)
{
    return L * H * W;
}
 
void BoxProperties(int L, int H, int W, int& A)
{
    A = 666;
    //V = BoxVolume(L, H, W);
}
Merci d'avance.