DBGHelp.dll вызывает загрузку msvcrt.dll в отладочной версии

Мое приложение компилируется с помощью 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 не будет загружен.

Как это исправить?

Мне нужно иметь только msvcrtd.dll в моем выполнении отладки.

Существует ли специальная версия DBGHelp.dll для отладки (использующая msvcrtd.dll)?


person itaj    schedule 24.10.2010    source источник


Ответы (1)


В чем проблема с загрузкой MSVCRT.LIB и MSVCRTD.DLL? В любом случае, я бы подумал, что это только в вашей сборке Debug, как вы, кажется, заметили в вопросе.

Я не думаю, что вы действительно хотите возиться с DLL отладки ОС - это то, что DBGHELP.DLL - это не более желательно, чем, например, загрузка вашего приложения Debug Kernel32.dll.

person Steve Townsend    schedule 24.10.2010
comment
Rational Purify (анализатор утечек памяти) выдает предупреждение об их наличии. Я на самом деле не знаю, каковы последствия. Вы уверены, что нет никакой проблемы в том, чтобы иметь их обоих? - person itaj; 25.10.2010
comment
@itaj - я покопаюсь, но не могу понять, почему это проблема, если модели памяти не смешаны. Возвращает ли dbghelp.dll выделенную память? Это не вы должны быть в порядке. Нет проблем с классами C+, так как DLL имеет интерфейс C. - person Steve Townsend; 25.10.2010
comment
В DBHelp нет смешанного владения (без смешанного распределения/свободы), если это произойдет, это, вероятно, немедленно приведет к сбою приложения. В настоящее время у меня нет никаких проблем, я просто предположил, что выпуск msvcrt не должен был загружаться в отладочную сборку. - person itaj; 25.10.2010
comment
@itaj - тогда я думаю, что с тобой все в порядке - в конце концов, это всего лишь предупреждение. Что такое код предупреждения Purify? - person Steve Townsend; 25.10.2010
comment
Одноранговый узел получил это предупреждение об очистке и сказал мне, что я, вероятно, слишком рано сделал вывод, что наличие обоих в одном процессе является проблемой. Только не нужно смешивать модели. Предупреждение об очистке может быть чем-то более локальным для его модуля, возможно, там есть какое-то смешение моделей, которое необходимо решить. Но это будет локальное исправление NP. Спасибо за помощь. - person itaj; 26.10.2010