Пошаговое руководство. Компиляция программы на языке C из командной строки
Средства сборки Visual Studio включают компилятор C, который можно использовать для создания всех базовых консольных программ до полных классических приложений Windows, мобильных приложений и т. д. Microsoft C/C++ (MSVC) — это компилятор C и C++, который в последних версиях соответствует некоторым из последних языковых стандартов C, включая C11 и C17.
В этом пошаговом руководстве показано, как создать простейшую программу на языке C в стиле «Hello, World» в текстовом редакторе с последующей компиляцией из командной строки. Если вы хотите работать в C++ в командной строке, см . пошаговое руководство. Компиляция собственной программы C++ в командной строке. Если вы хотите попробовать интегрированную среду разработки Visual Studio вместо использования командной строки, см . пошаговое руководство. Работа с проектами и решениями (C++) или использование интегрированной среды разработки Visual Studio для классических приложений C++.
Необходимые компоненты
Для выполнения этого пошагового руководства необходимо установить Visual Studio или средства сборки для Visual Studio и дополнительную разработку классических приложений с помощью рабочей нагрузки C++.
Visual Studio — это эффективная интегрированная среда разработки, которая поддерживает полнофункциональный редактор, диспетчеры ресурсов, отладчики и компиляторы для многих языков и платформ. Сведения об этих компонентах, а также о скачивании и установке Visual Studio, включая бесплатный выпуск Visual Studio Community, см. в этой статье.
При использовании версии Build Tools для Visual Studio устанавливаются только программы командной строки, библиотеки и компиляторы, необходимые для сборки программ на C и C++. Это идеальный вариант для создания заданий и упражнений, а установка выполняется относительно быстро. Чтобы установить только набор программ командной строки, скачайте Build Tools для Visual Studio на странице скачивания Visual Studio, а затем запустите установщик. В установщике Visual Studio выберите рабочую нагрузку C++ (в более ранних версиях Visual Studio выберите рабочую нагрузку средств сборки C++ и нажмите кнопку «Установить«.
При установке средств в командной строке используется другое средство, используемое для создания программы C или C++. MSVC имеет сложные требования к среде командной строки для поиска инструментов, заголовков и библиотек, которые он использует. Невозможно использовать MSVC в обычном окне командной строки без некоторой подготовки. Вам понадобится окно командной строки разработчика, являющееся обычным окном командной строки, в котором заданы все необходимые переменные среды. К счастью, Visual Studio устанавливает сочетания клавиш для запуска командных строк разработчика, имеющих среду, настроенную для сборок командной строки. К сожалению, имена сочетаний клавиш командной строки разработчика и их расположение отличаются практически в каждой версии Visual Studio и в разных версиях Windows. Первая задача пошагового руководства — найти нужный ярлык.
Ярлык командной строки разработчика автоматически задает правильные пути для компилятора и средств, а также для всех необходимых заголовков и библиотек. Некоторые из этих значений различаются для каждой конфигурации сборки. Если вы не используете ни один из ярлыков, эти значения среды необходимо задать самостоятельно. Дополнительные сведения см. в статье Использование набора инструментов MSVC из командной строки. Так как настраивать среду разработки сложно, настоятельно рекомендуется использовать ярлык командной строки разработчика вместо создания собственного.
Эти инструкции зависят от используемой версии Visual Studio. Чтобы ознакомиться с документацией по предпочтительной версии Visual Studio, используйте селектор Версия. Он находится в верхней части оглавления на этой странице.
Открытие командной строки разработчика в Visual Studio 2022
Если вы установили Visual Studio 2022 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2022 (не приложение Visual Studio 2022). Выберите элемент Командная строка разработчика для VS 2022, чтобы открыть окно командной строки.
Открытие командной строки разработчика в Visual Studio 2019
Если вы установили Visual Studio 2019 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2019 (не приложение Visual Studio 2019). Выберите элемент Командная строка разработчика для VS 2019, чтобы открыть окно командной строки.
Открытие командной строки разработчика в Visual Studio 2017
Если вы установили Visual Studio 2017 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Visual Studio 2017 (не приложение Visual Studio 2017). Выберите элемент Командная строка разработчика для VS 2017, чтобы открыть окно командной строки.
Открытие командной строки разработчика в Visual Studio 2015
Если вы установили Microsoft Visual C++ Build Tools 2015 в Windows 10 или более поздней версии, откройте меню «Пуск» и выберите Все приложения. Прокрутите вниз и откройте папку Microsoft Visual C++ Build Tools. Выберите элемент Командная строка Native Tools x86 Visual C++ 2015, чтобы открыть окно командной строки.
Если вы используете другую версию Windows, найдите в меню «Пуск» или на начальной странице папку средств Visual Studio, содержащую ярлык командной строки разработчика. Можно также ввести «командная строка разработчика» в строке поиска в Windows и выбрать командную строку, которая соответствует установленной версии Visual Studio. Откройте окно командной строки с помощью ярлыка.
Затем убедитесь, что командная строка разработчика настроена правильно. В окне командной строки введите cl (или CL , регистр не имеет значения для имени компилятора, но имеет значение для параметров компилятора). Результат должен выглядеть следующим образом.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option. ] filename. [ /link linkoption. ]
В зависимости от версии Visual Studio и установленных обновлений могут быть различия в текущем каталоге или номерах версий. Если приведенный выше результат похож на отображаемый, можно приступать к сборке программ C или C++ в командной строке.
Если вы получаете ошибку, например «cl», не распознается как внутренняя или внешняя команда, операблная программа или пакетный файл», ошибка C1034 или ошибка LNK1104 при выполнении команды cl, то при установке Visual Studio вы не используете командную строку разработчика или что-то не так. Для продолжения нужно будет исправить ошибку.
Если вы не можете найти ярлык командной строки разработчика или сообщение об ошибке при вводе cl , может возникнуть проблема с установкой Visual Studio. При использовании Visual Studio 2017 или более поздней версии попробуйте переустановить рабочую нагрузку Разработка классических приложений на C++ с помощью установщика Visual Studio. Подробные сведения см. в статье Справка по установке средства С++ в Visual Studio. Можно также переустановить Build Tools со страницы Загрузки Visual Studio. Не переходите к следующему разделу, пока команда cl не сработает. Дополнительные сведения об установке Visual Studio и устранении неполадок см. в статье Установка Visual Studio.
В зависимости от версии Windows, установленной на компьютере, и конфигурации системы безопасности может потребоваться правой кнопкой мыши открыть контекстное меню для ярлыка командной строки разработчика и выбрать пункт Запуск от имени администратора, чтобы успешно выполнить сборку и запуск программы, созданной в этом пошаговом руководстве.
Создание файла исходного кода на языке C и его компиляция из командной строки
- В окне командной строки разработчика введите команду cd c:\ , чтобы изменить текущий рабочий каталог на корень диска C:. Затем введите md c:\hello , чтобы создать каталог, и введите cd c:\hello , чтобы перейти к этому каталогу. В этом каталоге будут находиться исходный файл и скомпилированная программа.
- В командной строке разработчика введите команду notepad hello.c . В появившемся диалоговом окне блокнота с оповещением выберите Да, чтобы создать файл hello.c в рабочей папке.
- В окне блокнота введите следующие строки кода:
#include int main()
C:\hello>dir Volume in drive C has no label. Volume Serial Number is CC62-6545 Directory of C:\hello 10/02/2017 03:46 PM . 10/02/2017 03:46 PM .. 10/02/2017 03:36 PM 143 hello.c 1 File(s) 143 bytes 2 Dir(s) 514,900,566,016 bytes free
c:\hello>cl hello.c Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.c Microsoft (R) Incremental Linker Version 14.10.25017.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj
Примечание. Если вы получаете сообщение об ошибке, например «cl не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл», ошибке C1034 или LNK1104, командная строка разработчика настроена неправильно. Чтобы получить сведения о том, как устранить эту проблему, вернитесь к разделу Открыть командную строку разработчика. Если вы получаете другое сообщение об ошибке или предупреждение компилятора или компоновщика, проверьте исходный код, исправьте ошибки, сохраните его и снова запустите компилятор. Для получения сведений о конкретных ошибках введите номер ошибки в поле поиска вверху этой страницы.
Hello, World! This is a native C program compiled on the command line.
Следующие шаги
Этот пример Hello, World является самой простой программой C. Реальные программы выполняют полезные действия и имеют файлы заголовков, дополнительные исходные файлы и ссылки на библиотеки.
Вы можете использовать шаги, описанные в этом пошаговом руководстве для C, для создания собственного кода, чтобы не вводить приведенный пример. Вы также можете выполнить сборку различных примеров кода на C, которые можно найти в других местах. Чтобы скомпилировать программу с большими файлами исходного кода, введите их все в командной строке:
cl file1.c file2.c file3.c
Компилятор выводит программу с именем file1.exe . Чтобы изменить имя program1.exe , добавьте параметр компоновщика /out :
cl file1.c file2.c file3.c /link /out:program1.exe
Чтобы автоматически перехватывать другие ошибки программирования, рекомендуется выполнить компиляцию с помощью порога предупреждений /W3 или /W4:
cl /W4 file1.c file2.c file3.c /link /out:program1.exe
Компилятор cl.exe имеет множество других параметров, которые можно применять для создания, оптимизации, отладки и анализа кода. Чтобы просмотреть краткий список, введите cl /? в командной строке разработчика. Можно также выполнять компиляцию и компоновку отдельно и применять параметры компоновщика в более сложных сценариях сборки. Дополнительные сведения о параметрах и использовании компилятора и компоновщика см. в справочнике по сборке для C/C++.
Для настройки и создания более сложных проектов в командной строке можно использовать NMAKE и файлы makefile либо MSBuild и файлы проекта. Дополнительные сведения об использовании этих средств см. в разделах Справочник по NMAKE и MSBuild.
Языки C и C++ похожи, но имеют различия. Компилятор Microsoft C/C++ (MSVC) использует простое правило для определения языка, используемого при компиляции кода. По умолчанию компилятор MSVC рассматривает все файлы с расширением .c как исходные коды на языке С, а файлы с расширением .cpp как исходные коды на языке С++. Если указан параметр компилятора /TC, компилятор будет рассматривать все файлы как исходные коды на языке С вне зависимости от расширения.
По умолчанию MSVC совместима со стандартами ANSI C89 и ISO C99, но не строго соответствует. В большинстве случаев переносимый код на языке C будет компилироваться и выполняться должным образом. Компилятор обеспечивает дополнительную поддержку изменений в ISO C11/C17. Чтобы выполнить компиляцию с поддержкой C11/C17, используйте флаг компилятора /std:c11 или /std:c17 . Для поддержки C11 и C17 требуется Windows SDK 10.0.20201.0 или более поздняя версия. Рекомендуется использовать Windows SDK 10.0.22000.0 или более позднюю версию. Последнюю версию пакета можно скачать на странице Windows SDK. Дополнительные сведения и инструкции по установке и использованию этого пакета SDK для разработки на языке C см. в статье Установка поддержки C11 и C17 в Visual Studio.
Некоторые функции библиотеки и имена функций POSIX являются нерекомендуемыми в компиляторе MSVC. Функции поддерживаются, но предпочтительные имена изменились. Дополнительные сведения см. в статьях Функции безопасности в CRT и Предупреждение компилятора (уровень 3) C4996.
Создание и запуск проекта консольного приложения C++
Вы создали проект консольного приложения C++ и ввели код. Теперь вы можете выполнить сборку приложения и запустить его в Visual Studio. Затем запустите его как автономное приложение из командной строки.
Необходимые компоненты
- Установите и запустите на своем компьютере Visual Studio с рабочей нагрузкой Разработка классических приложений на C++. Если установка еще не выполнена, следуйте инструкциям в статье Установка поддержки C++ в Visual Studio.
- Создайте проект Hello, World!» По умолчанию он содержит код для печати Hello World! . Если вы еще не сделали этого, выполните действия, описанные в разделе Создание проекта консольного приложения С++.
Если Visual Studio выглядит следующим образом, можно приступать к сборке и запуску приложения:
Сборка и запуск кода в Visual Studio
- Для сборки проекта выберите в меню Сборка пункт Собрать решение. Окно Вывод отображает результаты процесса сборки.
- Чтобы запустить этот код, в строке меню выберите Отладка и Запуск без отладки. Открывается окно консоли, и запускается ваше приложение. При запуске консольного приложения в Visual Studio система выполняет код, а затем выводит сообщение «Нажмите любую клавишу, чтобы продолжить. . .», чтобы вы могли просмотреть выходные данные.
Поздравляем! Вы создали свое первое консольное приложение «Hello, world!» в Visual Studio! Нажмите любую клавишу, чтобы закрыть окно консоли и вернуться в редактор Visual Studio.
Выполнение кода в командном окне
Обычно консольные приложения запускаются из командной строки, а не в Visual Studio. После создания приложения Visual Studio его можно запустить из командного окна. Вот как можно найти и запустить новое приложение в окне командной строки.
- В обозревателе решений выберите решение HelloWorld (а не проект HelloWorld) и щелкните правой кнопкой мыши, чтобы открыть контекстное меню. Выберите Открыть папку в проводнике, чтобы открыть окно проводника в папке решения HelloWorld.
- В окне проводник откройте папку Debug . Эта папка содержит файлы приложения HelloWorld.exe и отладки. Удерживайте клавишу SHIFT и щелкните правой кнопкой мыши HelloWorld.exe , чтобы открыть контекстное меню. Выберите команду Копировать как путь, чтобы скопировать путь к приложению в буфер обмена.
- В окне проводник откройте x64 папку и затем папку Debug . Эта папка содержит файлы приложения HelloWorld.exe и отладки. Удерживайте клавишу SHIFT и щелкните правой кнопкой мыши HelloWorld.exe , чтобы открыть контекстное меню. Выберите команду Копировать как путь, чтобы скопировать путь к приложению в буфер обмена.
- Чтобы открыть окно командной строки, нажмите Windows + R, чтобы открыть диалоговое окно Выполнить. Введите cmd.exe в текстовом поле Открыть, а затем выберите ОК для запуска окна командной строки.
- В окне командной строки щелкните правой кнопкой мыши, чтобы вставить путь к приложению в командную строку. Нажмите клавишу ВВОД, чтобы запустить приложение.
Поздравляем! Вы создали и запустили консольное приложение в Visual Studio.
Дальнейшие действия
После создания и запуска этого простого приложения можно приступать к более сложным проектам. Дополнительные сведения см. в разделе Использование интегрированной среды разработки Visual Studio для разработки приложений для настольных систем на языке C++. В нем содержатся более подробные пошаговые руководства, посвященные возможностям Microsoft C++ в Visual Studio.
Руководство по устранению неполадок
Здесь приведены решения распространенных проблем, которые могут возникнуть при создании первого проекта C++.
Сборка и запуск кода в Visual Studio: проблемы
Если в редакторе исходного кода отображаются красные волнистые линии, то сборка может содержать ошибки или предупреждения. Убедитесь, что код соответствует примеру в написании, пунктуации и регистре.
Выполнение кода в командном окне: проблемы
Если путь, показанный в проводник заканчивается \HelloWorld\HelloWorld , вы открыли проект HelloWorld вместо решения HelloWorld. Вы будете путать папку Debug , которая не содержит ваше приложение. Перейдите на уровень вверх в проводнике, чтобы открыть папку решения — первый HelloWorld в пути. Эта папка также содержит папку Debug , и вы найдете там свое приложение.
Вы также можете перейти в папку решения Debug в командной строке, чтобы запустить приложение. Приложение не будет запускаться из других каталогов, если не указан путь к приложению. Однако вы можете скопировать приложение в другой каталог и запустить его из него. Его также можно скопировать в каталог, указанный PATH переменной среды, а затем запустить его из любого места.
Если путь, показанный в проводник заканчивается \HelloWorld\HelloWorld , вы открыли проект HelloWorld вместо решения HelloWorld. Вы будете путать папку x64\Debug , которая не содержит ваше приложение. Перейдите на уровень в проводник, чтобы перейти к папке решения, первой HelloWorld в пути. Эта папка также содержит папку x64\Debug , и вы найдете там свое приложение.
Вы также можете перейти в папку решения x64\Debug в командной строке, чтобы запустить приложение. Приложение не будет запускаться из других каталогов, если не указан путь к приложению. Однако вы можете скопировать приложение в другой каталог и запустить его из него. Его также можно скопировать в каталог, указанный PATH переменной среды, а затем запустить его из любого места.
Если в контекстном меню отсутствует параметр Копировать как путь, закройте меню, а затем удерживайте нажатой клавишу SHIFT при повторном открытии. Эта команда предназначена только для удобства. Можно также скопировать путь к папке из панели поиска проводника и вставить его в диалоговое окно Выполнить, а затем ввести имя исполняемого файла в конце. При этом потребуется чуть больше действий по вводу текста, но результат будет тем же.
Отладка приложения, которое не входит в решение Visual Studio (C++, C#, Visual Basic, F#)
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Иногда требуется выполнить отладку приложения (EXE-файл), которое не является частью решения Visual Studio. Это может быть проект с открытой папкой, вы или кто-то другой мог создать приложение вне Visual Studio или вы получили приложение в другом месте.
- Для проекта с открытой папкой в Visual Studio (без файла проекта или решения) см. статью Выполнение и отладка кода или (для C++) Настройка параметров отладки с помощью launch.vs.json.
- Для приложения, которое не существует в Visual Studio, отладка обычно выполняется путем запуска за пределами Visual Studio, а затем присоединения с помощью функции Присоединение к процессу в отладчике Visual Studio. Дополнительные сведения см. в статье Присоединение к выполняемым процессам. Присоединение к приложению требует выполнения некоторых операций вручную, и это занимает несколько секунд. Из-за этой задержки присоединение не помогает отладить проблемы при запуске или приложение, которое не ждет ввода данных пользователем и быстро завершается. В таких ситуациях можно создать проект Visual Studio EXE для приложения или импортировать его в существующее решение C#, Visual Basic или C++. Не все языки программирования поддерживают исполняемые проекты.
Функции отладки для приложения, не созданного в Visual Studio, ограниченны, независимо от того, присоединяетесь ли вы к нему или добавляете в решение Visual Studio.
Если у вас есть исходный код, лучше всего импортировать его в проект Visual Studio. Затем запустите отладочную сборку приложения.
Если у вас нет исходного кода и у приложения нет отладочной информации в совместимом формате, вам доступно немного функций отладки.
Создание EXE-проекта для существующего приложения
- В Visual Studio последовательно выберите Файл>Открыть>Проект.
- В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
- Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится в новом временном решении Visual Studio.
- Запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
Чтобы импортировать приложение в решение Visual Studio
- Когда решение C++, C# или Visual Basic будет открыто в Visual Studio, выберите Файл>Добавить>Существующий проект.
- В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
- Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится как новый проект в текущем решении.
- Выберите новый файл и запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
См. также
- Параметры отладчика и подготовка
- Безопасность отладчика
- DBG-файлы
Как просмотреть код программы?
Как просмотреть код программы (написанной на Visual Basic в Visual Studio) имея только исполняемый файл .exe?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Кто угодно может просмотреть CIL-код моей программы
Привет. Уже некоторое время программирую на решётке, постепенно начинаю думать в глубь. К.
Просмотреть код
Голова уже не соображает, так что не вините. Подскажите какой прграммой лучше всего можно.
Как просмотреть ассемблерный код программы, написанной на с++ в VS 2010
Как просмотреть ассемблерный код проги написанной на с++ в VS 2010 ? (Там вроде надо пройтись в.
Можно ли в VB 6.0 просмотреть код готовой программы сделанной в нём же?
Можно ли в VB 6.0 просмотреть код готовой программы сделанной в нём же?
Администратор
![]()
16464 / 12929 / 5091
Регистрация: 17.03.2014
Сообщений: 26,341
Записей в блоге: 1

Сообщение было отмечено EQUATRUM как решение
Решение
EQUATRUM, с помощью одного из декомпиляторов.
Регистрация: 30.09.2018
Сообщений: 43
Исходный код можно просмотреть у любой программы, написанной хоть на каком языке и в любой IDE?
Администратор
![]()
16464 / 12929 / 5091
Регистрация: 17.03.2014
Сообщений: 26,341
Записей в блоге: 1
У любой без средств защиты от декомпиляции
Регистрация: 30.09.2018
Сообщений: 43
Я пока что плохо разбираюсь в этом, но закрытый исходный код это значит код, который защитили от декомпиляции?
Администратор
![]()
16464 / 12929 / 5091
Регистрация: 17.03.2014
Сообщений: 26,341
Записей в блоге: 1
EQUATRUM, нет. Закрытый исходный код это код доступ к которому есть только у авторов/владельцев программы.
Говорить о защите исходного кода от декомпиляции бесмысленно т.к. код и так уже код. Куда его еще декомпилировать?
Регистрация: 30.09.2018
Сообщений: 43
Вот у меня есть программа, которую я написал на Visual Basic в Visual Studio.
(1-ый вопрос) Если я скину вам только .exe файл моей программы, то вы сможете получить исходный код программы путём декомпиляции исполняемого файла .exe, я правильно понял?
(2-ой вопрос) Закрытый исходный код — как его закрыть? Закрытый исходный код — это значит что .exe файл защитили от декомпиляции?
Администратор
![]()
16464 / 12929 / 5091
Регистрация: 17.03.2014
Сообщений: 26,341
Записей в блоге: 1
1) Да
2) Нужно держать код в секрете. То есть хранить его так чтобы доступ был только у тебя.
1316 / 1014 / 144
Регистрация: 01.10.2009
Сообщений: 3,304
Записей в блоге: 1
EQUATRUM, для досуга
Регистрация: 30.09.2018
Сообщений: 43
То есть получается закрытый исходный код это просто никому его не говорить? Я думал что это исходный код который нужно закрыть с помощью какой-то программы. Так если закрытый код — это код который разработчик не хочет показывать, его всё равно ведь можно узнать с помощью декомпиляции. Вопрос напрашивается, получается смысла нет скрывать свой исходный код если его можно получить с помощью декомпиляции.
1316 / 1014 / 144
Регистрация: 01.10.2009
Сообщений: 3,304
Записей в блоге: 1
Сообщение от EQUATRUM 
получается смысла нет скрывать свой исходный код если его можно получить с помощью декомпиляции.
получается да
Администратор
![]()
16464 / 12929 / 5091
Регистрация: 17.03.2014
Сообщений: 26,341
Записей в блоге: 1
EQUATRUM, смысл все-таки есть потому что декомпиляция не восстаналивает код в виде полностью идентичном оригиналу. Например, комментариев там не будет. Локальные переменные по другому могут называться. Мелочь конечно, но нем не менее.
