ПредусловиеVC++ проблема в ситуации экспорта/импорта глобальных переменных в DLLs
среды: VC2005
я столкнулся с этой проблемой, когда обнаружила циклическую зависимость в моем проекте (две DLL ссылки друг на друга), поэтому разделим либо от одной dll до двух dll.
объяснить с примером:
typedef struct { <br>
char myFileName[MAX_PATH];
} MyStructure;
До:
MyHeader.h
MyStructure globalStruct;
После:
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;
не удалось кода после изменения: (этот код работать в конкретной библиотеке DLL)
handle = LoadLibrary(globalStruct.myFileName);
Я подтвердил значения globalStruct.myFileName являются такой же (в аренду реальные слова).
Я не могу получить доступ к значению непосредственно с отладчиком после изменения. поэтому, чтобы увидеть значение в отладчике, я скопировал временную локальную переменную char []. И затем я обнаружил, что перед значением и после того, как значение отличается от хвостового фиктивного символа.
перед:
д: [мой путь] '0' (символ конца нуль) '0' '0' ... после:
д: [мой путь] '0' (символ конца null) '-3' '-3' '-3' ...
спасибо, что посмотрели.