У меня есть удобный класс, который переключается между различными библиотеками, в которых я храню ресурсы. Каждая DLL регистрируется (экземпляр и другая информация), используя enum
значение. Информация хранится в статических полях. Когда мне нужно переключить дескриптор ресурса, я использую конструктор с определенным модулем enum
значение, которое переключает текущий дескриптор ресурса и сохраняет старый дескриптор ресурса.
Ситуация следующая. Я получаю текущее состояние модуля с AfxGetModuleState
в DLL с алгоритмом, затем используйте мой удобный класс для переключения дескриптор ресурса на DLL с ресурсами, затем я снова использую AfxGetModuleState
в длл с алгоритмом. Адрес структуры, возвращаемой AfxGetModuleState
в длл с алгоритмом и в моем удобном классе есть разные.
Мое приложение является однопоточным, поэтому адрес структуры, возвращаемой AfxGetModuleState
должно быть одинаковым (оно должно быть глобальным), но это разные.
Это приводит к невозможности загрузки ресурсов из определенной библиотеки DLL, потому что текущий дескриптор ресурсов, который был установлен в моем удобном классе для библиотеки DLL с ресурсами, остается нулевым в библиотеке DLL с алгоритмом и CString::LoadString(nID)
выходит из строя.
Отладочная версия моего приложения работает хорошо, но ошибка появляется только в releasewithdebug
,
PS: я начинающий программист MFC.
Задача ещё не решена.
Других решений пока нет …