Подтвердить что ты не робот

MSVCR90D.dll не найден в режиме отладки с Visual С++ 2008

У меня проблема с Visual С++ 2008. Я установил opencv, и я создал новую программу, и я создаю ее без ошибок. Однако он жалуется на то, что не обнаружил MSVCR90D.dll при отладке. В режиме выпуска нет никаких проблем.

У меня есть MSVCR90D.dll в одной из папок Winsxs. Кто-нибудь знает, как справиться с этой проблемой? Это известная ошибка?

Джерард

4b9b3361

Ответ 1

Существует несколько потенциальных решений, описанных в этом сообщении . Посмотрите, поможет ли кто-нибудь из них.

Один намек оттуда:

Переход на% System Drive%\Windows\WinSxS и найдите каталог x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456

Если этого не существует, перейдите к VS настройки и убедитесь, что у вас есть все библиотеки, установленные под VС++.

И еще один:

У меня была такая же проблема, но она была исправлена отключением инкрементной привязки (Свойства проекта... Линкер... Общие... Включить инкрементную привязку: Нет).

Подтверждение последнего:

Проекты, построенные на программном диск жалуется на отсутствие MSVCR90D.dll. Проблема уходит если вы отключите инкрементную привязку (и, конечно, перестроить все).

Ответ 2

С той же проблемой я нашел сообщение, которое привело меня к отладке DLL в установке VS9.0. Для установки по умолчанию они находились в: C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT.

Существует три библиотеки DLL и файл манифеста. Вы можете добавить их в свой каталог System32, добавить каталог в переменную среды PATH или скопировать файлы в тот же каталог, что и ваш исполняемый файл, при отладке.

Инкрементное связывание ускоряет ваши сборки (компоновщик только повторно связывает библиотеки, которые изменились вместо повторной привязки всего проекта). В противном случае это не влияет на вывод сборки. Для большого проекта я бы не рекомендовал отключать инкрементную привязку.

Ответ 3

Была та же проблема, хотя другой проект VC9.0 преуспел. Поэтому я сравнил обе настройки проекта. Ключевое различие было в разделе "Свойства проекта" → "Свойства конфигурации" → "Инструмент манифеста" → "Ввод и вывод" → "Вставить манифест". Этот параметр должен быть установлен на YES.

Ответ 4

Проблемы с загрузкой DLL намного проще с Dependency Walker. Он позволяет вам профилировать ваше приложение, ловя обе библиотеки DLL, загруженные при запуске, и библиотеки DLL, загруженные позже. Он выплюнет много сообщений, связанных с загрузкой DLL, или с невозможностью их загрузить. Он также понимает загрузку DLL через SxS.

Вы можете передать EXE в качестве аргумента в Depends.EXE, и он будет профилировать это приложение. Это можно комбинировать с большинством IDE. Например, в Visual Studio вы можете установить команду "Команда для отладки". По умолчанию это ваш собственный EXE. Измените его на depend.EXE и установите аргументы команды (по крайней мере) /pb your.debug.exe.

Ответ 5

Перекомпилируйте свой проект в VС++ 2008 с помощью функции File- > New- > Project из существующего кода. Это помогло мне, возможно, это поможет вам. С наилучшими пожеланиями.

Ответ 6

Я решил такую ​​же проблему, как ниже:

  • Выберите проект, щелкните правой кнопкой мыши и откройте страницу свойств.
  • Выберите Свойства конфигурации.
  • Выберите C/С++ из списка.
  • Выберите генерацию кода.
  • Посмотрите список свойств слева и посмотрите свойство Runtime Library.
  • Выберите Многопоточность Debug вместо многопоточной DLL.

Когда вы это делаете, ваш проект встраивает зависящие DLL, и поэтому он избежал проблем с зависимостями.

Примечание. Я работал над проектом dll и имел эту проблему. После выполнения шагов он работал для моей ситуации.

Ответ 7

Это одна из причин, по которой я статически связываю; больших EXE, но у меня никогда не было проблемы с зависимостью, как это раньше. Наверное, стоит вопрос сам по себе, хотя...

Ответ 8

Я не могу дать окончательное решение, но вот некоторые полезные ссылки:

И, конечно же, в MSDN гораздо больше, если вы следуете ссылкам.

Ответ 9

У меня была проблема:

Не удалось загрузить файл или сборку "AudioInterface, Version = 1.0.3548.29920, Culture = neutral, PublicKeyToken = null" или одну из его зависимостей. Это приложение не удалось запустить, поскольку конфигурация приложения неверна. Переустановка приложения может решить проблему. (Исключение из HRESULT: 0x800736B1)

AudioInterface было именем моего проекта на С++.

Переключившись на конфигурацию "Отпустить", все сработало.

Я проследил его с отсутствием файла манифеста вместе с моей DLL, который я также отслеживал с установкой Assembly Identity. (Свойствa > Инструмент манифестa > Общие > Идентификатор сборки)

Я удалил эту настройку, и манифест упал в нужном месте, и все сработало.

Ответ 10

Я попробовал все предлагаемые решения без везения. Наконец, я обнаружил, что манифест отсутствует в папке "C:\WINDOWS\WinSxS\Manifests".

Найдите папку в C:\WINDOWS\WinSxS, где находится ваша dll. Проверьте, есть ли манифест в C:\WINDOWS\WinSxS\Manifests, который соответствует имени папки вашей DLL. Если манифест отсутствует, скопируйте правильный манифест с другого компьютера и вставьте его в папку манифеста. Имена файлов манифеста:

"x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.cat"

"x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.manifest"