Condition préalablevC++ problème dans les variables globales d'import/export de la situation dans dll
environnement: VC2005
j'ai rencontré ce problème lorsque découvert la dépendance circulaire dans mon projet (deux références dll les uns des autres), donc diviser soit d'un dll à deux dll.
expliquer par exemple:
typedef struct { <br>
char myFileName[MAX_PATH];
} MyStructure;
Avant:
MyHeader.h
MyStructure globalStruct;
Après:
MyCommon.h
#ifdef _MYGLOBAL_
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif
API extern MyStructure globalStruct;
MyGlobal.c
API MyStructure globalStruct;
MySpecific.c
API MyStructure globalStruct;
échoué code après changé: (ce code execute dans dll spécifique)
handle = LoadLibrary(globalStruct.myFileName);
Je confirme les valeurs globalStruct.myFileName sont même (au vrai mot).
Je ne peux pas accéder directement à la valeur avec le débogueur après modification. Donc, pour voir la valeur dans le débogueur, j'ai copié la variable locale temp []. Et puis, j'ai trouvé avant la valeur et après la valeur sont différents dans la queue factice factice.
avant:
d: [mon chemin] '0' (char null end) de '0' '0' ... après:
d: [mon chemin] '0' (extrémité char null) '-3' '-3' '-3' ...
merci pour votre lecture.