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

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

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

Джерард

У меня такая же проблема. По состоянию на 18.07.2009 ни один из приведенных ответов не отвечает на вопрос. Вот почему я снова и спросил здесь stackoverflow.com/questions/1150464

Piotr Dobrogost 19.07.2009 22:10
Shankar Damodaran 26.07.2015 11:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
17
2
45 099
11

Ответы 11

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

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

Go to %System Drive%\Windows\WinSxS and look for the directory x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456

If this doesn't exist, go to the VS setup and make sure you have all libraries installed under VC++.

И еще один:

I had the same problem, but fixed it by turning off incremental linking (Project properties... Linker... General... Enable Incremental Linking: No).

Подтверждая последнее:

Projects built on a software-mounted drive complain about a missing MSVCR90D.dll. The problem goes away if you turn off incremental linking (and rebuild all, of course).

Спасибо большое за помощь. Это сработало!! Однако могут ли у меня возникнуть проблемы с включением инкрементного связывания? Что это меняет? Еще раз спасибо

Mat 21.10.2008 03:18

Из MSDN: Программа с инкрементальной компоновкой функционально эквивалентна программе с инкрементальной компоновкой. Это важный момент. Подробнее читайте на msdn.microsoft.com/en-us/library/4khtbfyf(VS.80).aspx.

Jorge Ferreira 21.10.2008 12:29

Отключил инкрементное связывание (OGRE3D), и все заработало. Спасибо +1

Brock Woolf 13.08.2009 19:12

Большое спасибо за "программно смонтированный диск", это была моя проблема.

Cray 17.09.2011 23:38

Установка «Разрешить инкрементное связывание» на «НЕТ» сработала для меня.

Khulja Sim Sim 04.11.2015 19:47

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

«Вероятно, это само по себе стоит вопроса» Хотя я не согласен с высказанной вами точкой зрения, я полностью согласен с вашим выводом ... ^ _ ^

paercebal 20.10.2008 19:54

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

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

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

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

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

это работает для меня. Я просто копирую библиотеки DLL, и все работает нормально. Однако копирование библиотек может быть не лучшим выбором, ни добавление дополнительного каталога в переменную PATH (необходимо перезагрузить компьютер). Есть ли лучший способ, чем эти ??

TSL_ 31.07.2012 12:08

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

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

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

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

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

При переходе в конфиг "Release" все заработало.

Я отследил это по отсутствию файла манифеста вместе с моей библиотекой DLL, который в дальнейшем отслеживал, чтобы установить идентификатор сборки. (Свойства> Инструмент манифеста> Общие> Идентификация сборки)

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

Была та же проблема, хотя другой проект VC9.0 справился. Я сравнил обе настройки проекта. Решающее различие было в «Свойства проекта» -> «Свойства конфигурации» -> «Инструмент манифеста» -> «Ввод и вывод» -> «Вставить манифест». Эта опция должна быть установлена ​​на ДА.

это может быть не так! он просит меня использовать файл манифеста, а не встроенный манифест. Я изменил на "НЕТ", и он работает нормально

TSL_ 31.07.2012 12:09

Это точное изменение решило для меня проблему. Он может отличаться в зависимости от обстоятельств.

Mark McKenna 24.09.2012 23:34

Я безуспешно пробовал все предложенные решения. Наконец я обнаружил, что манифест отсутствует в папке "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"

Перекомпилируйте свой проект в VC++ 2008, используя функцию File-> New-> Project From Existing Code. Помогло себе, наверное поможет вам. С уважением.

Я решил ту же проблему, что и ниже:

  1. Выберите проект, щелкните правой кнопкой мыши и откройте страницу свойств.
  2. Выберите Свойства конфигурации.
  3. Выберите C / C++ из древовидного списка.
  4. Выберите Генерация кода.
  5. Посмотрите на список свойств слева и найдите свойство Библиотека времени исполнения.
  6. Выберите Многопоточная отладка вместо многопоточной DLL.

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

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

Я столкнулся с подобной проблемой, но ни одно из описанных решений у меня не помогло.

Наконец, я сделал следующее, чтобы исправить свою проблему:

Шаг 1: Следуйте предложению @ user176861

Шаг 2: В Свойствах проекта VC++ -> Свойства конфигурации -> Компоновщик -> Файл манифеста: В «Дополнительные зависимости манифеста» добавьте следующее:

type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'

После внесения вышеуказанного изменения я смог отладить.

Другие вопросы по теме