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