Условие
среда: 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 совпадают (по сути, реальные слова).
Я не могу получить доступ к значению напрямую с помощью отладчика после изменения. Итак, чтобы увидеть значение в отладчике, я скопировал в переменную temp local char []. И потом, я обнаружил, что значения до и после различаются в зависимости от фиктивных символов.
перед:
d: [мой путь] '0' (char end null) '0' '0' ...
после того, как:
d: [мой путь] '0' (конец символа пуст) '- 3' '-3' '-3' ...
спасибо за чтение.