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

Исправлена ​​ошибка "MSVCP110D.dll отсутствует на вашем компьютере"

Я столкнулся со следующей (довольно распространенной) проблемой: я запускаю свою программу в режиме отладки в VS2010 и/или VS2012, но при запуске он выходит из строя, говоря:

Программа не может запускаться, поскольку MSVCP100D.dll отсутствует в вашем компьютер. Попробуйте переустановить программу, чтобы устранить эту проблему.

Теперь я нашел ряд возможных решений, но никто из них не работает для меня:

  • Скомпилировать с /MTd вместо/MDd: на самом деле это разрешает проблему, но мне не разрешено: моя программа является частью более крупной программы, а /MD [d] является обязательной.
  • Установите Распространяемый пакет VS 2010. Это не работает, потому что у меня установлен VS 2012, поэтому этот установщик говорит мне: На машине обнаружена более новая версия Microsoft Visual С++ 2010 Redistributable.
  • Поиск, перетаскивание версии MSVCP100D.dll в правильный каталог. Я не отбрасываю неизвестные DLL в места, где они могут мешать другим вещам.
  • Последнее решение: переустановка VS2010/VS2012: возможно, но поскольку это также означало бы переустановку множества других пакетов и плагинов, которые мне нужны, я бы хотел избежать этого, если это не совсем необходимо.

Остались ли другие варианты?

4b9b3361

Ответ 1

В пакетах Visual Studio REDIST никогда не развертываются версии файлов CRT DEBUG. Это по дизайну.

В VS 2012 или более поздней версии самым простым способом развертывания DEUBG-версий CRT является установка пакета "Удаленные отладочные инструменты" на тестовых машинах.

Для VS 2012, последний пакет инструментов удаленной отладки здесь

Для VS 2013, последний пакет инструментов удаленной отладки здесь.

Другой вариант - просто использовать локальное развертывание DLL приложения (т.е. скопировать его в каталог приложения). Опять это только для целей тестирования. Для фактического развертывания вашего приложения вам необходимо использовать не отладочные версии CRT.

Если эта ошибка происходит на вашей машине разработки, то у вас есть другие проблемы, потому что с установкой VS 2012 вы должны иметь VS 2012 DEBUG CRT на этой машине.

UPDATE:: К сожалению, я ожидал, что DLL отладочной CRT будет включен в пакет удаленных отладочных инструментов вместе с битами удаленного отладчика и устройством отладки Direct3D 11. Увы, это не так. См. Подготовка тестовой машины для запуска исполняемого файла отладки. Вы должны либо использовать МСМ в Program Files (x86) directory in \Common Files\Merge Modules, либо копировать DLL-бок о бок с Program Files (x86) directory in \Microsoft Visual Studio <version>\VC\redist\Debug_NonRedist\. Команда VS, вероятно, предположила, что вы уже это делали, но я предлагаю им перевернуть ее в пакет удаленных инструментов.

Ответ 2

У меня была аналогичная проблема (проект, выполненный в VS 2012, но я запускал VS2013) и разрешил его:

  • Откройте проект (или решение) в VS2013 (или более новом)

  • Откройте меню "Проект" и выберите опцию "Retarget the project" (это был первый вариант, но после его применения этот параметр исчез).

  • Восстановите свое решение.

Ответ 3

Я новичок в openCV и С++ и имел ту же проблему, используя openCV 2.4.10 с Visual Studio Express 2013 на платформе Windows 7, 32-разрядной. Если бы я сделал простую программу без использования OpenCV, программа запустилась, но когда я использовал OpenCV, я получил недостающую DLL-ошибку.

Этот пост дал понять:

Я предполагаю, что проблема была у меня не с моей Visual Studio, а с моим OpenCV. OpenCV был скомпилирован на версию визуальной студии, которая требовала MSVCP110.dll. Я мог бы попробовать другую версию OpenCV или скомпилировать OpenCV снова, используя VS2013, но мне не хватило времени. Вместо этого я нашел файл dll в другом месте и поместил его в мою папку system32 (не уверен, что это рекомендуется). Это поставило проблему. Однако, как упоминал @slater, я не буду рекомендовать загрузку dll с внешнего сайта из-за проблем с безопасностью.

Ответ 4

Это отладочная DLL времени выполнения. Если (и ТОЛЬКО если!) Вы просто хотите запустить отладочную сборку своего собственного приложения в системе без установленной Visual Studio, то вы можете найти отсутствующие библиотеки DLL в

  • C:\Windows\System32 (для 64-битных сборок)
  • C:\Windows\SysWOW64 (для 32-битных сборок)

Просто продолжайте копировать DLL, пока ваш исполняемый файл не запустится.

Если это НЕ то, что вы пытаетесь сделать, обратитесь к fooobar.com/questions/419272/..., который является ПРАВИЛЬНЫМ, но менее практичным ответом.

Ответ 5

У меня была та же проблема, я выяснил, что причина в том, что я использовал dll, скомпилированную с VS2012 в VS2013 проекте. JUST скачал пропущенную dll и поместил ее в мой путь компоновщика и wala: программа работала. Я загрузил его из http://www.dll-files.com/.

Особенности: Моя программа работала в режиме деблокирования, но не в режиме отладки, поскольку он говорит, что MSVCP110D.dll отсутствует. Мой код был программой обработки изображений opencv. Я поместил недостающую dll в путь компоновщика opencv в параметрах проекта VS2013.