У меня проблема с Visual C++ 2008. Я установил opencv, создал новую программу и создаю ее без ошибок. Однако он жалуется на то, что не находит MSVCR90D.dll при отладке. В режиме выпуска проблем вообще нет.
У меня есть MSVCR90D.dll в одной из папок Winsxs. Кто-нибудь знает способ решения этой проблемы? Это известная ошибка?
Джерард
возможный дубликат msvcr90d.dll не найден в режиме отладки





В этом сообщение на форуме описано несколько потенциальных решений. Посмотрим, поможет ли что-нибудь из этого.
Один намек оттуда:
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).
Спасибо большое за помощь. Это сработало!! Однако могут ли у меня возникнуть проблемы с включением инкрементного связывания? Что это меняет? Еще раз спасибо
Из MSDN: Программа с инкрементальной компоновкой функционально эквивалентна программе с инкрементальной компоновкой. Это важный момент. Подробнее читайте на msdn.microsoft.com/en-us/library/4khtbfyf(VS.80).aspx.
Отключил инкрементное связывание (OGRE3D), и все заработало. Спасибо +1
Большое спасибо за "программно смонтированный диск", это была моя проблема.
Установка «Разрешить инкрементное связывание» на «НЕТ» сработала для меня.
Это одна из причин, по которой я статически связываю; более крупные EXE, но у меня никогда раньше не было такой проблемы с зависимостями. Хотя, наверное, стоит вопрос сам по себе ...
«Вероятно, это само по себе стоит вопроса» Хотя я не согласен с высказанной вами точкой зрения, я полностью согласен с вашим выводом ... ^ _ ^
Устранение проблем с 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 (необходимо перезагрузить компьютер). Есть ли лучший способ, чем эти ??
Я не могу дать окончательного решения, но вот несколько полезных ссылок:
И, конечно же, если вы перейдете по ссылкам, в MSDN можно найти гораздо больше информации.
У меня была проблема:
Не удалось загрузить файл или сборку AudioInterface, Version = 1.0.3548.29920, Culture = нейтральный, PublicKeyToken = null или одну из его зависимостей. Это приложение не удалось запустить из-за неправильной конфигурации приложения. Переустановка приложения может решить проблему. (Исключение из HRESULT: 0x800736B1)
AudioInterface был названием моего проекта C++.
При переходе в конфиг "Release" все заработало.
Я отследил это по отсутствию файла манифеста вместе с моей библиотекой DLL, который в дальнейшем отслеживал, чтобы установить идентификатор сборки. (Свойства> Инструмент манифеста> Общие> Идентификация сборки)
Я удалил эту настройку, и манифест упал в нужное место, и все заработало.
Была та же проблема, хотя другой проект VC9.0 справился. Я сравнил обе настройки проекта. Решающее различие было в «Свойства проекта» -> «Свойства конфигурации» -> «Инструмент манифеста» -> «Ввод и вывод» -> «Вставить манифест». Эта опция должна быть установлена на ДА.
это может быть не так! он просит меня использовать файл манифеста, а не встроенный манифест. Я изменил на "НЕТ", и он работает нормально
Это точное изменение решило для меня проблему. Он может отличаться в зависимости от обстоятельств.
Я безуспешно пробовал все предложенные решения. Наконец я обнаружил, что манифест отсутствует в папке "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. Помогло себе, наверное поможет вам. С уважением.
Я решил ту же проблему, что и ниже:
Когда вы это делаете, ваш проект встраивает зависимые библиотеки DLL и, таким образом, избегает проблем с зависимостями.
Примечание: я работал над проектом dll и столкнулся с этой проблемой. После выполнения вышеуказанных шагов это сработало в моей ситуации.
Я столкнулся с подобной проблемой, но ни одно из описанных решений у меня не помогло.
Наконец, я сделал следующее, чтобы исправить свою проблему:
Шаг 1: Следуйте предложению @ user176861
Шаг 2: В Свойствах проекта VC++ -> Свойства конфигурации -> Компоновщик -> Файл манифеста: В «Дополнительные зависимости манифеста» добавьте следующее:
type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'
После внесения вышеуказанного изменения я смог отладить.
У меня такая же проблема. По состоянию на 18.07.2009 ни один из приведенных ответов не отвечает на вопрос. Вот почему я снова и спросил здесь stackoverflow.com/questions/1150464