Ошибка MSVCP100.dll не обнаружена, даже если она установлена

Я получаю следующую ошибку, когда пытаюсь запустить exe на машине x64, которая была построена для процессора x86 с использованием компилятора MC ++ (vs2010) на машине x86:

Программа не может запуститься, поскольку на вашем компьютере отсутствует MSVCR100.dll.

У меня уже есть Visual Studio 2012 (вместе с распространяемым пакетом Visual C ++ 2012 Update 4 - как x86, так и x64), установленным на этом втором (x64) компьютере.

Быстрый поиск показывает, что «MSVCR100.dll» уже присутствует в «C: \ Windows \ System32».

Я попытался установить распространяемый компонент Microsoft Visual C ++ 2010, но он завершился с ошибкой, сообщающей мне, что уже установлена ​​более совершенная версия.

Пожалуйста, объясни мне, что я делаю неправильно. :)


person Bhavneet Singh Bajwa    schedule 22.01.2014    source источник
comment
Если вы создали его с помощью VS2010, необходимо установить версию среды выполнения VS2010.   -  person Roger Rowland    schedule 22.01.2014
comment
Чтобы помочь вам с отладкой вашей проблемы, вы можете попробовать dependencywalker.com, чтобы на самом деле увидеть, что именно у вас двоичный файл ищет.   -  person Mateusz Kołodziejski    schedule 22.01.2014
comment
@RogerRowland, но, как уже упоминалось: я попытался установить распространяемый компонент Microsoft Visual C ++ 2010, но он завершился с ошибкой, сообщающей мне, что в системе уже установлена ​​более совершенная версия (распространяемый компонент Microsoft C ++ 2012 Update 4).   -  person Bhavneet Singh Bajwa    schedule 22.01.2014
comment
Что ж, со мной этого не происходит. Я могу установить vcredist для VS2005, VS2008, VS2010 и VS2012 - все они необходимы в нашем установщике для разных компонентов. Откуда вы скачали распространяемый пакет? Похоже, вы устанавливаете другую версию VS2012, а не версию VS2010. У установленных dll разные имена. Попробуйте загрузить отсюда.   -  person Roger Rowland    schedule 22.01.2014
comment
@RogerRowland Загрузил (как x86, так и x64) отсюда: microsoft. ru / en-us / download / details.aspx? id = 30679   -  person Bhavneet Singh Bajwa    schedule 22.01.2014
comment
Это установщик VS2012 - см. Ссылку в моем комментарии выше.   -  person Roger Rowland    schedule 22.01.2014
comment
@ MateuszKołodziejski Программа, которую я пытаюсь запустить, представляет собой только один исполняемый файл, тем не менее, я попробую ..   -  person Bhavneet Singh Bajwa    schedule 22.01.2014
comment
@RogerRowland загрузил и установил пакет по предоставленной вами ссылке. Теперь это дает мне еще одно сообщение об ошибке, в котором говорится, что msvcr100d.dll отсутствует. Мне удалось найти .dll из Интернета и скопировать его в папку приложения, и exe сработал. Но это кажется грязным исправлением, как я могу правильно установить этот файл?   -  person Bhavneet Singh Bajwa    schedule 22.01.2014
comment
msvcr100d.dll - это отладочная dll - вы не должны распространять ее. Убедитесь, что вы развертываете сборку Release, а не сборку Debug.   -  person Roger Rowland    schedule 22.01.2014
comment
@RogerRowland К сожалению, мне нужно развернуть отладочную сборку, потому что exe - это инструмент для внутреннего использования, и природа требует, чтобы он был отлаживаемым.   -  person Bhavneet Singh Bajwa    schedule 22.01.2014
comment
Обратите внимание, что это противоречит лицензии MS на распространение файлов DLL Debug на системы, в которых не установлен VS201.   -  person Roger Rowland    schedule 22.01.2014
comment
это в вашем PATH?   -  person nothingisnecessary    schedule 27.04.2017


Ответы (2)


Вашему приложению нужна dll для VS2010. вы должны разместить MSVCR100.dll и MSVCP100.dll со своей машины x86 рядом с exe. Вы также можете установить VS2010 вместе с текущим VS2012. то вам также следует установить Service Pack1 для VS2010 для правильной работы. После установки VS2010 у вас есть доступ к обеим упомянутым dll, и вам, вероятно, не нужно копировать их в каталог exe.

person Nejat    schedule 22.01.2014
comment
я тоже думал попробовать то же самое. Я попробую и дам вам знать. - person Bhavneet Singh Bajwa; 22.01.2014
comment
Это сработало. Спасибо. Но это недостаток. Придется ли нам устанавливать Visual Studio 2010 на каждую машину, если мы хотим, чтобы запускался отлаживаемый исполняемый файл? - person Bhavneet Singh Bajwa; 22.01.2014
comment
вам следует перенести окончательную версию вашего приложения на другие платформы, на которых не установлена ​​VS. Отладочные версии приложений и различные библиотеки DLL Visual C ++ не распространяются. Для запуска вашей версии отладки вам необходимо установить распространяемый пакет C ++ на целевой компьютер. - person Nejat; 22.01.2014

Во-первых, в 64-битных версиях Windows 32-битные системные исполняемые файлы и файлы расширений приложений (также известные как библиотеки DLL) помещаются в %systemroot%\SysWOW64 вместо %systemroot%\System32 (который, что несколько парадоксально, содержит 64-битные версии в 64-битная Windows). Поэтому папку SysWOW64 необходимо проверить на наличие x86 / 32-разрядных библиотек MSVC (++).

Во-вторых, хотя установка соответствующей версии Visual Studio на целевой машине или сопровождение распространяемой программы необходимыми библиотеками C (++), теоретически должна решить проблему, но в этом нет необходимости. Достаточно установить соответствующий распространяемый пакет MSVC ++ (например, в данном конкретном случае распространяемый пакет Microsoft Visual C ++ 2010 x86).

Примечания:

  1. Вышеупомянутая информация теоретически верна, но поврежденные установки Windows или ... могут не соответствовать.
  2. Включение C ++ DLL в распределенную программу допустимо (и, возможно, консервативное, но правильное решение), но установка версии Visual Studio исключительно для того, чтобы иметь возможность использовать рассматриваемые DLL, определенно не является.
  3. В качестве примечания: распространяемые пакеты C ++ не устанавливают отладочные версии библиотек DLL, поэтому установка или доступ к соответствующей версии Visual Studio необходим для запуска приложений, скомпилированных отладкой.
person Mohammad Amin Bandekhoda    schedule 26.07.2015
comment
Большое Вам спасибо. Это решило мою проблему после нескольких часов поиска. - person MOHRE; 06.06.2018