Программа на C ++ не работает в системах Windows без установленной VS VCRUNTIME140.dll не найден

Когда я компилирую простую программу:

#include <iostream>

using namespace std;
void main() {
    cout << "Hello world!";
}

И настройте скомпилированный .exe в другой системе без установленной Visual Studio, я получаю следующую ошибку:

The Code execution cannot proceed because VCRUNTIME140.dll was not found. Reinstalling the program may fix the problem.

Когда я компилирую с cl.exe, я не получаю ошибок, знает ли кто-нибудь способ обхода этого без установки VCRUNTIME140.dll в системе. (Я тестировал несколько систем Windows, включая виртуальную машину Windows)


person cdev    schedule 27.12.2019    source источник
comment
Вам необходимо установить библиотеки времени выполнения C ++. Обычно VS поставляется с распространяемыми установщиками, но вы также можете скачать их с их веб-сайта. Ссылка для скачивания. Это необходимо, так как от них зависит любая программа на C или C ++, скомпилированная с помощью VS. В качестве альтернативы вы также можете просто скопировать все необходимые файлы.   -  person ChrisMM    schedule 27.12.2019


Ответы (2)


Я сталкивался с этой проблемой раньше, и есть простое решение,

Отсутствующие .dll - это проблема статического связывания, а не отсутствующих пакетов (в большинстве случаев), потому что Visual Studio 2019 поставляется с предварительно установленным тем, что вам нужно.

Чтобы исправить: перейдите в свойства вашего проекта (на вкладке проекта). Выберите C / C ++. Измените значение библиотеки времени выполнения на «Многопоточная отладка (/ MTd)»

Это заставит компилятор встроить среду выполнения в приложение. Исполняемый файл будет значительно больше, но он будет работать без каких-либо библиотек времени выполнения.

person asd plougry    schedule 27.12.2019
comment
То, что вы описываете, называется статическим связыванием со средой выполнения C ++. Я забыл включить этот вариант в свой ответ. Но чтобы внести поправки в ваше предложение, я бы посоветовал связать только сборки отладки с /MTd. Сборки релизов должны быть связаны с /MT (многопоточным). - person selbie; 27.12.2019
comment
И добро пожаловать в Stack Overflow. Вот ваш первый голос за, надеюсь, еще многих. - person selbie; 27.12.2019
comment
А как насчет селби на питоне? stackoverflow.com/questions/59496003/ - person asd plougry; 27.12.2019
comment
Это совсем другой вопрос. - person selbie; 27.12.2019
comment
Но я все равно ответил, потому что я хороший парень. :) - person selbie; 27.12.2019
comment
Это также вызовет утечку ресурсов CRT. Похоже, вы не знаете о последствиях статического связывания с библиотекой времени выполнения. - person IInspectable; 29.12.2019

Получите «Распространяемый пакет Visual Studio 20xx VC ++» для своей версии Visual Studio. Затем запустите на целевой машине для установки.

Внизу страницы: https://visualstudio.microsoft.com/downloads/

введите описание изображения здесь

Или внизу этой страницы для более старых версий Visual Studio: https://visualstudio.microsoft.com/vs/older-downloads/

введите описание изображения здесь

person selbie    schedule 27.12.2019