После сборки exe с использованием VS 2010 C ++ отсутствует MSVCP100.dll - PullRequest
18 голосов
/ 02 июля 2010

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

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

Спасибо!

Ответы [ 4 ]

30 голосов
/ 02 июля 2010

Настройте в своем проекте статическую ссылку на среду выполнения C / C ++ вместо ссылки на библиотеку времени выполнения:

  • Свойства конфигурации | C / C ++ | Генерация кода | Библиотека времени выполнения

Выберите Многопоточная (/ MT) (или Многопоточная отладка (/ MTd) для вашей отладочной сборки).

В качестве альтернативы вы сможете получить xcopy для развертывания DLL-библиотеки времени выполнения C / C ++, используя методику, описанную в http://msdn.microsoft.com/en-us/library/ms235291.aspx под заголовком «Развертывание библиотек DLL Visual C ++ в качестве частных сборок». Я не пробовал эту технику, так как обычно проще просто статически связывать, если вам нужна установка xcopy для родной программы на C ++.

4 голосов
/ 02 июля 2010

http://msdn.microsoft.com/en-us/library/ms235299.aspx

Распространение приложений, скомпилированных с помощью Visual C ++, требует распространения DLL-файлов среды выполнения C ++, используемых вашим приложением. В вашем случае я предполагаю, что вы хотите просто распространять папку, поэтому следуйте указаниям (соответствующим образом измененным для вашего приложения) здесь:

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 голосов
/ 02 июля 2010

Что я здесь не так делаю

То, что у тебя было, было адом дьявола. Вы непреднамеренно использовали динамическую связь с предыдущим компилятором, где это только что произошло, на большинстве целевых систем было соответствующее время выполнения Си. Windows часто включала VC 6 CRT, а с более свежим SP даже VC7 & 8 CRT.

При переходе на последний компилятор VC на большинстве систем не будет предварительно установлена ​​новая среда выполнения VC.

Как говорит Майкл Барр , вы можете получить возврат "без установки", если статически создадите ссылку.

Или вы можете включить CRT и манифест в одну и ту же папку, но установка не требуется.

Или включите vcredist.exe из VS2010 и получите 1 установку

1 голос
/ 09 сентября 2012

Вам необходимо установить Распространяемый пакет Microsoft Visual C ++ 2010 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...