Мое приложение с VC6 sp6 использует DBGHelp.lib для получения информации о стеке. Код похож на отладочные и выпускные компиляции. Проблема заключается в том, что при выполнении отладочной версии DBGHelp.dll загружает msvcrt.dll (версия выпуска). msvcrtd.dll в любом случае уже загружается моей отладочной ссылкой. Так что в итоге я получаю как msvcrtd.dll, так и msvcrt.dll в отладочной версии. В dsp установлен для загрузки библиотек по умолчанию, а msvcrt (d) .lib не упоминаются напрямую. Если я извлекаю код, который использует DBGHelp.dll и удаляет DBGHelp.lib из списка ссылок dsp, msvcrt.dll не загружается.DBGHelp.dll вызывает загрузку msvcrt.dll в отладочной версии
Как исправить это?
Мне нужно иметь только msvcrtd.dll в моем выполнении отладки.
Есть ли специальная версия DBGHelp.dll для отладки (которая будет использовать msvcrtd.dll)?
Rational Purify (анализатор утечки памяти) дает мне предупреждение о наличии обоих из них. Я действительно не знаю, каковы последствия. Вы уверены, что нет проблем с тем, чтобы они оба? – itaj
@itaj - Я буду копаться, но я не могу себе представить, почему это проблема, если модели памяти смешанны. Возвращает ли dbghelp.dll выделенную память? Это не должно быть хорошо. Нет проблем с классами C +, поскольку DLL имеет интерфейс C. –
Нет смешанного права собственности на DBHelp (без смешанного alloc/free), если это произошло, это может случайно привести к сбою приложения. У меня в настоящее время нет никаких проблем, я просто предположил, что выпуск msvcrt не должен быть загружен в сборку отладки. – itaj