2010-10-24 2 views
1

Мое приложение с 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)?

ответ

0

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

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

+0

Rational Purify (анализатор утечки памяти) дает мне предупреждение о наличии обоих из них. Я действительно не знаю, каковы последствия. Вы уверены, что нет проблем с тем, чтобы они оба? – itaj

+0

@itaj - Я буду копаться, но я не могу себе представить, почему это проблема, если модели памяти смешанны. Возвращает ли dbghelp.dll выделенную память? Это не должно быть хорошо. Нет проблем с классами C +, поскольку DLL имеет интерфейс C. –

+0

Нет смешанного права собственности на DBHelp (без смешанного alloc/free), если это произошло, это может случайно привести к сбою приложения. У меня в настоящее время нет никаких проблем, я просто предположил, что выпуск msvcrt не должен быть загружен в сборку отладки. – itaj

Смежные вопросы