Visual C ++ исполняемый файл и отсутствует MSVCR100d.dll

Я знаю, что об этом спрашивали в других местах и отвечали, но у меня есть проблемы с MS Visual Studio 2010. Я разработал исполняемый файл C ++, но если я запускаю версию Release на компьютере, на котором нет библиотеки времени выполнения VC ++ (например, msvcr100d.dll), я получаю & quot; программа не может запуститься, потому что msvcr100d.dll отсутствует на вашем компьютере & quot; ошибка.

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

Why is it trying to link with the debug version of the redistributable? I tried applying this fix, setting the runtime library setting to /MT instead of /MD (multi-threaded DLL), but that only made the problem worse (if I manually copied msvcr100d.dll, it then said it couldn't find msvcp110.dll).

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

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

 Farrukh Waheed23 нояб. 2012 г., 11:46
Именно из-за этой проблемы я перенес свой проект на VS 2008, и в Win 7 уже были необходимые библиотеки DLL.
 Michael Burr02 мая 2012 г., 04:12
Что ты имеешь в виду, используя/MT настройки сделали все хуже? Это должно устранить зависимость от времени выполнения DLL. Ваш проект зависит от других DLL? Это может быть то, что неправильно в зависимости от времени выполнения отладки. Утилита, подобная Dependency Walker, может помочь вам выяснить, так ли это: Dependencywalker.com
 Mehrdad02 мая 2012 г., 04:19
@ eli: Я не думаю, что люди действительно заботятся о риске безопасности, когда говорят, что не следует распространять DLL, так как вы все равно можете статически связываться. Это больше проблема лицензирования, чем что-либо еще.
 mgiuffrida02 мая 2012 г., 04:44
@ MichaelBurr Dependency Walker подтвердил, что одна из библиотек DLL, от которых зависит мой проект, зависит от msvcr100d.dll. Оказывается, что DLL не собиралась в режиме Release. Благодарность

Ответы на вопрос(6)

Я обновлял библиотеку VS2010 в проекте VS2012.

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

MSDN Library и, как я понимаю, установка распространяемого пакета Microsoft может помочь.

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

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

нения!

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

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

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

Для 32-битных ОС:Во

Для 64-битных ОС:Во

Решение Вопроса

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

Более того, отладочная версия -н распространяемый, так что это не так просто, как «упаковать» его в свой исполняемый файл или сжать эти DL

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

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

 Joseph18 дек. 2016 г., 09:59
Установка распространяемого пакета Microsoft Visual C ++ 2010 SP1 (x86) отлично сработала для меня!
 andreee19 сент. 2017 г., 09:37
@ Джозеф, который должен применяться только к релизной версии, поскольку (как упоминал Коди Грей) отладочные версии обычно не распространяются. Если у вас не установлен MSVC2010,msvcr100d.dll по-прежнему не хватает.

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

Ваш ответ на вопрос