Я разработал приложение, которое не требует никакой установки и может использоваться неадминистраторами. Я не потерял бы эту функциональность, но когда я использую .exe на других компьютерах, чем том, я запрограммировал его на, я получаю ошибку, которую недостающий MSVCP100.dll препятствует тому, чтобы файл выполнил.
Что я делаю неправильно здесь? Как я включаю файл в свою сборку конечных версий?
Спасибо!
Сконфигурируйте свой проект для статической ссылки на среду выполнения C / C ++ вместо ссылки на DLL среды выполнения:
Выберите многопоточную (/ MT) (или многопоточную отладку (/ MTd) для вашей отладочной сборки).
В качестве альтернативы вы можете получить развертывание xcopy библиотеки времени выполнения C / C ++, используя метод, описанный на http://msdn.microsoft.com/en-us/library/ms235291.aspx под заголовком «Развертывание библиотек DLL Visual C ++ как частных сборок». Я не пробовал эту технику, так как обычно проще просто статически связать, если вам нужна установка xcopy нативной программы C ++.
Что я здесь делаю не так
То, что у вас было, было адом dll. Вы непреднамеренно использовали динамическое связывание с предыдущим компилятором, где это только что произошло в большинстве целевых систем, была подходящая среда выполнения C. Windows часто включала VC 6 CRT, а с более поздним SP даже VC7 и 8 CRT.
Когда вы перешли на последнюю версию компилятора VC, в большинстве систем не будет предварительно установлена новая среда выполнения VC.
Как говорит Майкл Бёрр , вы можете получить обратно отказ от установки, если свяжете статически.
Или вы можете включить CRT и манифест в одну папку, по-прежнему не требуя установки.
Или включите vcredist.exe из VS2010 и сделайте одноразовую установку
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 \