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

После сборки exe с использованием VS 2010 С++ отсутствует MSVCP100.dll

Я разработал приложение, которое не требует установки и может использоваться не-администраторами. Я бы предпочел не потерять эту функциональность, но когда я использую .exe на других компьютерах, чем тот, который я запрограммировал, я получаю сообщение об ошибке, что недостающая MSVCP100.dll препятствует выполнению файла.

Что я здесь делаю неправильно? Как включить файл в мою сборку релизов?

Спасибо!

4b9b3361

Ответ 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 выкл.