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, поскольку она никогда не будет обновляться, но моя цель - просто отправить этот исполняемый файл нескольким друзьям в краткосрочной перспективе.
Ответы
Ответ 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