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

Visual С++ исполняемый и отсутствующий MSVCR100d.dll

Я знаю, что это было задано в других местах и ​​отвечало, но у меня проблемы с MS Visual Studio 2010. Я разработал исполняемый файл С++, но если я запустил версию Release на машине, у которой нет VС++ runtime library (т.е. Msvcr100d.dll), я получаю, что "программа не запускается, потому что ошибка msvcr100d.dll отсутствует на вашем компьютере".

Это странно по двум причинам:

  • Почему он пытается связать с отладочной версией распространяемого?
  • Я попробовал применить это исправление, установив в библиотеку среды выполнения значение /MT вместо/MD (многопоточная DLL), но это только усугубило проблему ( если я вручную скопировал msvcr100d.dll, тогда он сказал, что не может найти msvcp110.dll).

Как я могу упаковать библиотеку времени выполнения с моим исполняемым файлом, чтобы я мог запускать его на компьютерах, на которых нет MS VC 2010 или распространяемого дистрибутива?

Я знаю, что он считает угрозу безопасности включать копию DLL, поскольку она никогда не будет обновляться, но моя цель - просто отправить этот исполняемый файл нескольким друзьям в краткосрочной перспективе.

4b9b3361

Ответ 1

Вам определенно не требуется отладочная версия CRT, если вы компилируете в режиме "выпуска". Вы можете сказать, что это отладочные версии DLL, потому что они заканчиваются на d.

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

Убедитесь, что вы компилируете все компоненты своего приложения в режиме "выпуска" и что вы связываете правильную версию CRT и любых других библиотек, которые вы используете (например, MFC, ATL и т.д.).).

Вы, конечно, потребуете msvcr100.dll (обратите внимание на отсутствие суффикса d) и некоторых других, если они еще не установлены. Направьте своих друзей, чтобы загрузить Visual С++ 2010 Redistributable (или x64), или включить это с вашим приложением автоматически, создав установщик.

Ответ 2

Для меня проблема возникла в этой ситуации:

Я установил VS2012 и больше не нуждался в VS2010. Я хотел, чтобы мой компьютер был чистым, а также удалил исполняемые файлы исполнения VS2010, считая, что никакая другая программа не будет использовать его. Затем я захотел протестировать свою DLL, присоединив ее к программе (позвольте ей назвать ее программой X). У меня такое же сообщение об ошибке. Я думал, что я сделал что-то неправильно при компиляции DLL. Однако реальная проблема заключалась в том, что я подключил DLL к программе X, а программа X была скомпилирована в VS2010 с информацией об отладке. Вот почему ошибка была брошена. Я перекомпилировал программу X в VS2012, и ошибка исчезла.

Ответ 3

Эта проблема объясняется в MSDN Library, и, насколько я понимаю, установка Microsoft Redistributable Package может помочь.

Но иногда может использоваться следующее решение (как решение для стороннего разработчика):

В Visual Studio откройте Project properties -> Configuration properties -> C/C++ -> Code generation и измените опцию Runtime Library на /MT вместо /MD

Ответ 4

Обычно приложение, которое пропускает .dll, указывает, какая версия вам нужна - если она не работает, просто загрузите Microsoft Visual С++ 2010 x86 или x64 по этой ссылке:

Для 32-разрядной ОС: Здесь

Для 64-разрядной ОС: Здесь

Ответ 5

У меня такая же ошибка.

Я ссылался на VS2010 DLL в проекте VS2012.

Просто перекомпилировал DLL на VS2012, и теперь все в порядке.

Ответ 6

Отладочная версия библиотек библиотеки vС++ НЕ предназначена для перераспределения!

Отладочные версии приложения не распространяются и отлаживаются версии библиотек библиотеки Visual С++ не распространяются. Вы может развертывать отладочные версии приложений и библиотек Visual С++ только для ваши другие компьютеры, с единственной целью отладки и тестирования приложения на компьютере, на котором нет Visual Studio установлен. Дополнительные сведения см. В разделе "Распространение файлов Visual С++".

Я также предоставил ссылку: http://msdn.microsoft.com/en-us/library/aa985618.aspx