Bonjour,

je rencontre un problème assez étrange, j'ai une structure UserInfo :

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
 
typedef struct _UserInfo
{	
char Name[256];
char Email[256];
char TelephoneMobile[50];
char  TelephoneMobile[50];
 
long BadLoginCount;
bool IsAccountLocked; 
 
time_t PasswordExpirationDate;
time_t LastLogin;
 
 
}   UserInfo;
J’utilise cette structure dans une DLL crée sous Visual C++ 2010 Express
et les fonctions de cette DLL sont utilisées dans un programme compilé sous GCC dans Code::Block. (par chargement explicite de la dll)

exemple : GetUserInfoAD(UserInfo *ret)

le problème c'est que dans cette fonction les valeurs sont correctement attribuées a la structure,
mais dans mon projet quand j'utilise la fonction de ma dll et que j'affiche les valeurs, j'ai les 4 char ( Name,Email, TelephoneMobile, TelephoneMobile) qui sont correctement affiché, mais les autres variables ( BadLoginCount,BadLoginCount,PasswordExpirationDate;LastLogin)
non.

En faite j'ai remarqué que selon dans quel ordre je déclare les variables dans ma structure, valeurs changent ou sont inversées entre les variables !
J'ai bien tenté de trouver la bonne combinaison mais j'ai toujours une variable qui n'a pas la bonne valeur .
Je précise que je re-compile bien sur, la DLL et l'EXE à chaque fois que je modifie la structure.
J'ai lu que les compilateurs effectuent des modifications au seins de la structure ( padding ?)

comment faire pour uniformiser la structure entre les deux compilateurs ? ou faire en sorte de forcer la même optimisation?

merci beaucoup d'avance,

cordialement