После создания exe использование C++ VS 2010, пропускающего MSVCP100.dll

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

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

Спасибо!

18
задан MPelletier 30 August 2010 в 03:28
поделиться

3 ответа

Сконфигурируйте свой проект для статической ссылки на среду выполнения C / C ++ вместо ссылки на DLL среды выполнения:

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

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

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

30
ответ дан 30 November 2019 в 07:17
поделиться

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

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

Когда вы перешли на последнюю версию компилятора VC, в большинстве систем не будет предварительно установлена ​​новая среда выполнения VC.

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

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

Или включите vcredist.exe из VS2010 и сделайте одноразовую установку

3
ответ дан 30 November 2019 в 07:17
поделиться

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 \

4
ответ дан 30 November 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: