Ordre en mémoire des variables dans une structure
Bonjour,
je rencontre un problème assez étrange, j'ai une structure UserInfo :
Code:
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 8O !
J'ai bien tenté de trouver la bonne combinaison mais j'ai toujours une variable qui n'a pas la bonne valeur :aie:.
Je précise que je re-compile bien sur, la DLL et l'EXE à chaque fois que je modifie la structure:zoubi:.
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