После сборки exe с использованием VS 2010 С++ отсутствует MSVCP100.dll
Я разработал приложение, которое не требует установки и может использоваться не-администраторами. Я бы предпочел не потерять эту функциональность, но когда я использую .exe на других компьютерах, чем тот, который я запрограммировал, я получаю сообщение об ошибке, что недостающая MSVCP100.dll препятствует выполнению файла.
Что я здесь делаю неправильно? Как включить файл в мою сборку релизов?
Спасибо!
Ответы
Ответ 1
Настройте проект, чтобы статически ссылаться на среду выполнения C/С++ вместо ссылки на DLL среды выполнения:
- Свойства конфигурации | C/С++ | Создание кода | Библиотека времени выполнения.
Выберите многопоточную (/MT) (или многопоточную отладку (/MTd) для вашей сборки отладки).
В качестве альтернативы вы сможете получить xcopy развертывание библиотеки времени выполнения C/С++, используя технику, зарегистрированную на http://msdn.microsoft.com/en-us/library/ms235291.aspx в разделе заголовок "Развертывание библиотек библиотеки Visual С++ в виде частных сборок". Я не пробовал эту технику, поскольку, как правило, проще просто статически ссылаться, если вам нужна xcopy установка собственной программы на С++.
Ответ 2
http://msdn.microsoft.com/en-us/library/ms235299.aspx
Распространение приложений, которые были скомпилированы с помощью Visual С++, требует распространения файлов DLL CW среды выполнения, которые использует ваше приложение. В вашем случае я предполагаю, что вы хотите просто распространять папку, поэтому следуйте инструкциям (соответствующим образом измененным для вашего приложения) здесь:
http://msdn.microsoft.com/en-us/library/dd293565.aspx
Или просто скопируйте файл msvcp100.dll в каталог приложения вместе с .exe, и вам будет хорошо идти.
32-бит msvcp100.dll
находится в C:\Windows\SysWOW64\
64-бит msvcp100.dll
находится в C:\Windows\System32\
Ответ 3
Что я здесь делаю неправильно
У вас был адский ад. Вы непреднамеренно использовали динамическую связь с предыдущим компилятором, где это только что произошло в большинстве целевых систем, было соответствующее время выполнения C. Windows часто включала VC 6 CRT и более поздние версии SP даже VC7 и 8 CRT.
Когда вы перешли на последний компилятор VC, большинство систем не будут иметь для вас новую версию времени выполнения VC.
Как Майкл Барр говорит, вы можете вернуть свою "нет" , если вы станете статическим.
Или вы можете включить CRT и манифест в той же папке, но не требует установки.
Или включите vcredist.exe из VS2010 и у вас есть 1 выкл.
Ответ 4
Вам необходимо установить Распространяемый пакет Microsoft Visual С++ 2010.