Технически возможно удалить эту зависимость в C, но я не уверен, что это возможно даже в C ++. И в любом случае, я бы не рекомендовал . Вы теряете много вещей, которые CRT делает для вас за кулисами, большинство из которых вы не хотите, чтобы заново себя изобретать. Для начала, это библиотека времени выполнения, которая на самом деле вызывает вашу функцию main
, а также вызывает конструкторы и деструкторы для глобальных и статических объектов C ++.
Лучшее и простое решение, вероятно, состоит в том, чтобы изменить способ связи вашего приложения с библиотеками времени выполнения. У вас есть два разных варианта: динамически и статически. Динамическое связывание более эффективно использует память и означает, что ваше приложение будет использовать все исправления ошибок, внесенные в библиотеку. Это зависит от наличия DLL времени выполнения для запуска вашего приложения. Статическое связывание фактически внедряет код библиотеки времени выполнения в ваше приложение на этапе компоновки. Это означает, что вы можете работать без распространения DLL, но есть важные предостережения.
Для простых приложений маловероятно, что эти предупреждения актуальны. Измените стиль ссылки, используемый в настройках вашего проекта:
- Щелкните правой кнопкой мыши имя своего проекта в обозревателе решений.
- Разверните параметр «C / C ++» в левом дереве и выберите пункт «Генерация кода».
В поле со списком свойств «Библиотека времени выполнения» выберите один из параметров «Многопоточный».
Отладочные сборки должны использовать «Многопоточную отладку», в то время как релизные сборки должны использовать «Многопоточность».
Обратите внимание, что, поскольку вы используете VS 2010, вы все равно можете динамически устанавливать связь со средой выполнения и получать все преимущества этого без необходимости запускать установщик CRT на целевых машинах. Все, что вам нужно, это распространяемые библиотеки DLL, расположенные в той же папке, что и исполняемый файл вашего приложения. Это делает развертывание (и даже тестирование) очень простым и понятным. Вы найдете эти библиотеки как часть вашей установки Visual Studio:
\Program Files\Visual Studio x.0\VC\redist\
И, конечно же, отладочные версии CRT никогда не подлежат распространению. Поскольку вы не должны распространять отладочные версии вашего приложения, это не проблема. Убедитесь, что вы скомпилировали сборку «Release» (используя выпадающий список в верхней панели инструментов), для которого вам потребуются только распространяемые библиотеки, найденные в указанном выше каталоге.
Не могу ли я использовать среду выполнения, которая поставляется с XP?
Нет среды выполнения C для вас, которая поставляется с любой версией Windows. Сама Windows действительно зависит от библиотеки времени выполнения C, но она развертывает частную версию этой библиотеки для собственного использования. Приложения не предназначены для ссылки на него или использовать его каким-либо образом. Вы самостоятельно развертываете все необходимые зависимости, и, как вы заметили, вы не можете предполагать, что на целевых машинах уже установлены правильные версии.