мои проблемы связаны с собственными библиотеками DLL C ++ (Visual Studio 2005, если это имеет значение) и с тем, как их писать, чтобы гарантировать, что:
- когда DLL скомпилирована в режиме выпуска, она будет правильно загружена EXE, скомпилированным в режиме выпуска или отладки (первый приоритет)
- когда DLL скомпилирована в режиме отладки, она также будет правильно загружена EXE, скомпилированным в режиме отладки.
Сегодня у меня есть собственная библиотека C ++, которая загружается и отлично работает в режиме выпуска DLL / EXE. DLL загружается, но не работает нормально (вызовы функций возвращают неожиданные результаты) в режиме выпуска DLL / EXE (и это огромная проблема, потому что это не позволяет мне отлаживать EXE, что является моей основной целью) и дает сбой о повреждении кучи в режиме DLL-debug / EXE-debug.
Я знаю, что существует проблема, связанная с CRT, которая требует изоляции CRT между DLL и EXE. Обычно эту проблему решают, делая операторы new / new [] / delete / delete [] частными в DLL и оборачивая их функциями create () / release (), которые позволяют создавать динамический объект EXE.
Мой вопрос: прежде чем я начну перефакторинг всего моего кода в этом направлении, нужно ли мне еще что-нибудь сделать, чтобы избежать подобных проблем? CRT-изоляция, вероятно, исправит мой сбой DLL-debug / EXE-debug, но я не уверен, что это решит проблему DLL-release / EXE-debug.
Намек? Кто-нибудь уже сталкивался с этой проблемой?
Спасибо, Ал.