2010-12-06 9 views
0

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.

Antwort

0

löste sich mein Problem.

Dies liegt daran, dll nicht neu kompiliert nach meiner kreisförmigen Abhängigkeit Entfernung Arbeit.

Also, dieses Problem ist nicht im Zusammenhang mit Import/Export globale Variable, sondern dll Problem erneut kompilieren.

Sorry für meine hässliche Frage.