VoraussetzungvC++ Problem in Situation Export/Import von globalen Variablen in dlls
Umgebung: VC2005
ich dieses Problem auftreten, wenn zyklische Abhängigkeit in meinem Projekt (zwei dll Referenzen einander) entdeckt, so teilen entweder von einer DLL bis zwei DLLs.
mit Beispiel erklären:
typedef struct { <br>
char myFileName[MAX_PATH];
} MyStructure;
Bevor:
MyHeader.h
MyStructure globalStruct;
Nach:
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;
fehlgeschlagen Code nach geändert: (dieser Code laufen in bestimmten DLL)
handle = LoadLibrary(globalStruct.myFileName);
I globalStruct.myFileName Werte bestätigt sind gleich (zumindest echte Wörter).
Ich kann nicht den Wert direkt mit Debugger nach der Änderung zugreifen. Um den Wert im Debugger zu sehen, habe ich in die temporäre Variable char [] kopiert. Und dann habe ich herausgefunden, dass der Wert und der Nach-Wert sich in Tailing-Dummy-Chars unterscheiden.
vor:
d: [my path] '0' (char Ende null) '0' '0' ... nach:
d: [my path] '0' (char Ende null) '-3' '-3' '-3' ...
Vielen Dank für Ihre Lektüre.