Чем консольное приложение отличается от пустого проекта
Алгоритм работы при создании C++-проекта в Visual Studio
1. New Project: Создание проекта.
- Пункт меню File -> New -> Project (Файл -> Создать -> Проект).
- В открывшемся окне в разделе Project Types (Установленные) найти Visual C++.
- В разделе Templates (Шаблоны) выбрать Win32 Console Application (Консольное приложение Win32).
- Указать имя нового «решения» (Solution Name) и имя проекта (Name).
- Сохранить проект на локальном диске в легко доступном месте (например, D:\Projects).
- Можно снять галочку Create folder for solution (Создать каталог для решения), чтобы не множить каталоги без необходимости.
- В следующем диалоговом окне щелкнуть Далее и затем выбрать Application Settings (Дополнительные параметры) -> Empty Project (Пустой проект). Убрать галочку с пункта Проверки жизненного цикла…
2. Add files: Добавление файлов.
Правый клик на проекте в окне Solution Explorer (Обозреватель решений) — пункт Add (Добавить) — пункт Create New Item (Создать элемент) или Add existing Item (Существующий элемент). Для этого и любого другого проекта понадобится как минимум один файл с точкой входа в программу — функцией main.
3. Exclude files: Исключение файлов.
Сначала удобно создать один проект и добавлять в него по одному файлу с решением каждой отдельной задачи. Однако при этом возникает проблема: в нескольких файлах проекта присутствует функция main, что противоречит правилам C++. Для решения данной проблемы, необходимо «исключать» файлы из проекта (правый клик на файле, Exclude from project (Исключить)). При этом файлы исчезнут из окна проекта, однако сохранятся в каталоге проекта на диске.
Давайте создадим консольное приложение, выбрав в меню File (Файл) пункт New --- Project (Создать --- Проект):
Solution Explorer
Утилита Solution Explorer (Обозреватель решений), доступная через меню View (Вид), позволяет просматривать набор всех файлов с содержимым и ссылаемых сборок, которые входят в состав текущего проекта:
Добавление ссылок на внешние сборки
Просмотр свойств проекта
И, наконец, напоследок важно обратить внимание на наличие в окне утилиты Solution Explorer пиктограммы Properties (Свойства). Двойной щелчок на ней приводит к открытию редактора конфигурации проекта, окно которого называется Project Properties (Свойства проекта):
В этом окне можно устанавливать различные параметры безопасности, назначать сборке надежное имя, развертывать приложение, вставлять необходимые для приложения ресурсы и конфигурировать события, которые должны происходить перед и после компиляции сборки.
Утилита Object Browser
В Visual Studio доступна еще одна утилита для изучения множества сборок, на которые имеются ссылки в текущем проекте. Называется эта утилита Object Browser (Браузер объектов) и получить к ней доступ можно через меню View. После открытия ее окна останется просто выбрать сборку, которую требуется изучить:
Отличие проектов от решений
Одной из важных вещей, которые необходимо понимать, является понимание разницы между проектом и решением:
Под понимается набор всех файлов исходного кода и ресурсов, которые будут компилироваться в единственную сборку (или в ряде случаев — в единственный модуль). Например, проектом может быть библиотека классов или приложение Windows с графическим пользовательским интерфейсом.
Под решением (solution) понимается набор всех проектов, которые будут образовывать определенный программный пакет (приложение).
Чтобы еще больше прояснить, в чем состоит отличие между проектом и решением, давайте посмотрим, что происходит при поставке проекта, состоящего из нескольких сборок. Например, это может быть интерфейс пользователя, специальные элементы управления и другие компоненты, поставляемые в виде библиотек в отдельных частях приложения. Кроме того, может существовать другой пользовательский интерфейс, предназначенный специально для администраторов. Каждая из этих частей приложения может содержаться внутри отдельной сборки и, следовательно, рассматриваться в Visual Studio как отдельный проект. Однако существует вероятность того, что все эти части будут кодироваться параллельно в сочетании друг с другом. В таком случае полезно иметь возможность редактировать их в Visual Studio как единое целое. Visual Studio позволяет делать это, рассматривая все проекты как образующие одно решение и воспринимая это решение как единый компонент, который должен считываться и делаться доступным для работы.
среда, 24 июля 2013 г.
Создание пустого проекта в среде Visual Studio 2010.
Добрый день друзья. Время стремительно мчится вперед, и мне как автору обучающего курса, следует идти в ногу со временем. Как показал опрос, проведенные в нашей группе во вконтакте, многие пользователи пользуются Visual Studio 2010. Думаю, со временем их количество будет только увеличиваться.
Поэтому я решил, что будет правильно показать, как создавать пустой проект в этой среде программирования. В принципе, все очень похоже.
Создание пустого проекта в Microsoft Visual Studio 2010.
Запускаем среду программирования. Перед нами открывается начальная страница.
Начальная страница Visual Studio 2010 |
Создаем проект. |
Окно основных свойств создаваемого проекта. |
Есть несколько способов.
1. Представлен на картинке ниже. (используем обозреватель решений)
Если Вам понравился этот урок, расскажите о нем вашим друзьям. В этом Вам могут помочь кнопки основных социальных сетей, расположенные ниже. Вам остается всего лишь кликнуть по любой из них.
Какие отличия между Windows и консольными приложениями?
При создании нового проекта в Visual С++ он просит выбрать один из указанных выше.
Единственное отличие заключается в том, что консольное приложение всегда создает консоль, если она не запускается с одного (или консоль активно отключается при запуске). С другой стороны, приложение Windows не создает консоль. Он все равно может прикрепляться к существующей консоли или создавать новый с помощью AllocConsole .
Это делает приложения Windows лучше подходящими для приложений GUI или фоновых приложений, потому что вы обычно не хотите, чтобы для них создано окно терминала.
Чтобы определить и изменить тип подсистемы приложения, вам необходимо прочитать части заголовка PE. Адрес данных подсистемы не исправлен, поскольку он является частью дополнительного заголовка файла, позиция которого определяется адресом, хранящимся в заголовке файла DOS (в элементе e_lfanew ). Этот адрес фактически указывает на запись _IMAGE_NT_HEADERS , которая, в свою очередь, включает структуру IMAGE_OPTIONAL_HEADER32 . У этого есть член int16 1) называемый Subsystem . Значение члена равно 2 для приложения Windows и 3 для консольного приложения. Существуют и другие подсистемы (в частности, POSIX и ядро). Я написал небольшое приложение VB6 для изменения подсистемы приложения, которое можно загрузить из ActiveVB в качестве исходного кода.
Формат PE не очень хорошо документирован, но этот документ может служить введением: Peering Inside PE: обзор формата исполняемого файла Win32 Portable.
1) Это не противоречит моему утверждению, что только один байт отличается: самый старший байт этого элемента всегда равен 0. Изменяется только младший значащий байт.
| Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее. |
Мы уже знаем, какие программы можно создавать в Lazarus. Но сегодня мы будем классифицировать программы с несколько иной точки зрения. Ниже перечислены основные виды программ с краткими описаниями.
Консольные приложения
Примеры работы с командной строкой см. в статье Кое что о ДОС.
Оконные приложения
Драйверы
Когда я говорю “стыкует”, то я имею ввиду, что драйвер позволяет организовать правильный обмен данными между компьютерным железом и ОС. То есть операционная система обращается не напрямую к железу, а через драйвер.
Зачем так сделано? Дело в том, что производителей, например, видеокарт, существует огромное количество. И все они делают их по своим внутренним стандартам. И операционная система не может знать всё обо всех видеокартах. Поэтому есть определённые общепринятые стандарты, которые поддерживаются операционной системой. И производитель “железа” делает какую угодно “железяку”, а затем просто пишет программу-драйвер, которая соответствует общепринятым стандартам и “стыкует” эту “железяку” с операционной системой.
Это позволяет извращённым умам делать разные смешные штуки. Например, можно написать “кривой” драйвер, который будет определять USB-мышку как флэшку. Конечно, работать такая “флэшка” не будет, но зато будет прикольно)))
Интерфейсы
Библиотеки
Удобство использования библиотек заключается в том, что они не привязаны к языку программирования. Например, вы можете написать библиотеку на языке С++, а использовать её потом в программах, которые пишите на Паскале.
Резидентные программы
Системные программы
В общем-то это обычные программы, которые могут быть как консольными, так и оконными приложениями. Сюда же я бы отнёс резидентные программы, библиотеки и драйверы. Пожалуй, это будет не совсем правильно. Однако эта статья для начинающих. Поэтому я не хочу перегружать читателей информацией, которую они пока плохо понимают. Давайте пока будем думать, что это куча разных вспомогательных программ, которые необходимы для нормальной работы системы и оборудования.
Пока на этом всё. Домашнего задания не будет. Просто подумайте о том, как огромен мир программирования, и сколько всего вам надо будет ещё изучить)))
Я хочу знать, в чем разница между приложением Windows Form, Win32Application и консолью. Я знаю, что приложение Windows Form и приложение Win32 являются графическим инструментом, но я хочу знать, когда использовать одно приложение над другим, и могу ли я преобразовать консольное приложение для окна формы приложения?
Решение
Win32 обычно относится к 32-битному Windows API. Тем не менее _WIN32 макрос определен как для 32-битного, так и для 64-битного программирования. Как тип проекта Visual Studio, он включает в себя программы уровня API с графическим интерфейсом и консольной подсистемой.
Подсистема Windows небольшое целочисленное значение в заголовке исполняемого файла, которое сообщает Windows, какие сервисы нужны этой программе. Это значение может быть проверено, например, с помощью от Microsoft dumpbin программа, например dumpbin c:windows
otepad.exe /headers | find "ubs" , В Windows 9x dumpbin вывод был доступен через функцию предварительного просмотра файла, но эта функция была прекращена.
Каждый процесс в Windows может быть связан с одним и не более чем одним консольным окном.
GUI подсистема означает, что Windows будет НЕ попытайтесь оборудовать каждый экземпляр соответствующим консольным окном. Однако процесс может создать само окно консоли. Обычно эта подсистема используется для обычных программ с графическим пользовательским интерфейсом (следовательно, «GUI»), а для большинства компоновщиков она указывается как «окна».
Консольная подсистема означает, что Windows будет пытаться оснастить каждый экземпляр соответствующим консольным окном, создавая новое при необходимости.
Обратите внимание, что
Тот же самый исходный код может быть собран как консоль или подсистема GUI. И это очень легко сделать. Просто измените спецификацию подсистемы.
Исполняемый файл подсистемы GUI имеет стандартные потоки, как и исполняемый файл консольной подсистемы.
Исполняемый файл консольной подсистемы может представлять графический интерфейс пользователя, так же как и графический интерфейс.
Также обратите внимание, что
Нет такой проблемы с инструментами GNU, то есть g ++.
Другие решения
«Приложение win32» является родным приложением Windows GUI.
«Консольное приложение» — это нативное приложение без графического интерфейса.
Я не совсем понимаю, что именно вы подразумеваете под «преобразованием» одного типа приложения в другое. Но. Если вы говорите об использовании какой-то IDE и конвертируете проект в другой: ДА, это возможно. Главное отличие — это .DLL, с которыми вы связали свое приложение. Например, вы можете настроить проект, открытый как «консоль», чтобы он вел себя как «win32». Это не очень легко, но остается возможным. Нет, если вы хотите узнать, можно ли преобразовать установленное вами существующее приложение: НЕТ.
Читайте также: