Bonjour,
je rencontre un problème assez étrange, j'ai une structure UserInfo :
J’utilise cette structure dans une DLL crée sous Visual C++ 2010 Express
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;
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
Partager