Бесплатный компилятор C++ Builder

(Пакет средств программирования от EMBARCADERO INC.
Дата публикации:2005
Дата обновления:2019
Поделиться в Twitter Поделиться в F******k Поделиться в VKontakte Поделиться в Telegram Поделиться в Mastodon

Языки программирования C и C++ составляют основу многих средств разработки приложений для операционных систем семейства Microsoft Windows. Подавляющее число примеров, содержащихся в руководствах по программированию в среде MS Windows, составлены на языках программирования C и C++. Если вы решили программировать на этих языках, то вам необходим набор программ (компилятор, компоновщик, отладчик и т.п.), позволяющих получать работоспособные программы, то есть исполняемые файлы. В качестве средства разработки можно воспользоваться набором консольных приложений под общим названием C++ Builder Compiler, бесплатно предоставляемым Embarcadero INC. Этот пакет содержит компилятор BCC32C/BCC32X, который, как сказано на официальной странице, является высокопроизводительной основой, отмеченной наградами линейки продуктов Embarcadero C++Builder. Компилятор C++Builder включает поддержку языка C11, инфраструктуру Dinkumware STL (стандартная библиотека шаблонов) и полную библиотеку среды выполнения Embarcadero C/C++ (RTL). В этом пакете также имеется ряд инструментов командной строки C/C++, таких как высокопроизводительный компоновщик и компилятор ресурсов. В пакет входят почти все заголовочные и библиотечные файлы, необходимые для разработки 32-разрядных приложений под Windows. Отсутствующие библиотеки импорта можно получить, воспользовавшись утилитой implib.exe, . Кроме того, пакет не содержит подробной документации, но материалов по программированию на Win32 API много в интернете, как и документации по директивам компилятора C++ Builder.

Бесплатная лицензия означает, что разработчик не оказывает технической поддержки пользователю и не обязуется предоставлять расширения, дополнения и обновления программного продукта, полученного по этой лицензии.

В состав пакета не входит интегрированная визуальная среда разработки и библиотеки компонентов, поставляемые в коммерческих продуктах компании. Однако если необходима интегрированная среда разработки, то имеет смысл обратить внимание на бесплатный пакет C++Builder Community Edition.

Ниже будет рассмотрен процесс установки пакета консольных приложений пакета C++ Builder и примеры того, как начать работать с ними. Для незрячих и слабовидящих пользователей и программистов материал может быть полезен, поскольку показывает, как можно программировать под Windows, не используя сложных и зачастую малодоступных визуальных сред разработки. Бесплатная лицензия, по которой распространяется этот пакет, позволяет использовать его при обучении программированию в учебных заведениях.

Для того чтобы воспользоваться рассмотренными в статье примерами, достаточно уметь создавать и запускать bat-файлы, а также иметь навыки программирования на языке C/C++ в 32-разрядной операционной системе MS Windows.

Где взять компилятор

Компилятор, запускаемый из командной строки, а также дополнительные утилиты к нему можно получить на сайте EMBARCADERO INC. — C++ Compiler - Free Tool. Для того чтобы получить доступ к инсталляционному пакету, необходимо пройти регистрацию. Время от времени сайт компании претерпевает некоторые изменения и точный адрес страницы может поменяться.

Этот пакет можно поискать на сайтах, распространяющих свободный или условно свободный софт (например, одна из доступных для загрузки ссылок располагается на странице https://www.softportal.com/get-403-borland-c-compiler.html.

Установка компилятора

Для установки компилятора следует запустить файл freecommandLinetools.exe. Эта программа представляет собой саморазворачивающийся архив. При установке нужно указать место, где вы хотите разместить файлы компилятора. По умолчанию будет предложена папка C:\Borland\BCC55. Вы можете изменить её по своему усмотрению. Нет необходимости создавать эту папку самостоятельно, так как программа установки (распаковки) сделает это сама. Если вы выбрали папку отличающуюся от указанной, то, исполняя нижеследующие рекомендации, вы должны подставлять путь к вашей папке.

В ту же самую папку, в которую установлен компилятор, надо поместить Turbo Debugger (отладчик). Для этого нужно запустить программу TurboDebugger.exe и указать в качестве папки для установки отладчика ту же папку, что и для компилятора. Отладчик, как это следует из его названия, необходим для отладки программ, однако он имеет труднодоступный для скринридера интерфейс, так как работает в консольном режиме.

Ни компилятор, ни отладчик не вносят изменений в реестр и не меняют системные настройки, поэтому при желании можно убрать компилятор с компьютера простым удалением папки со всем содержимым.

Замечание: Не стоит в папку, где установлен компилятор, помещать файлы разрабатываемых вами программ. Пользовательские файлы (исходный код, результаты работы компилятора и компоновщика, пакетные файлы и пр.) следует помещать в отдельную папку, ниже называемую рабочей или пользовательской.

Подготовка к работе

В своей работе компилятор использует ряд дополнительных файлов, местоположение которых ему необходимо указать либо в командной строке, либо в файлах конфигурации. Речь идет о заголовочных или включаемых (include) файлах, имеющих расширение .h или .hpp, и файлах библиотек с расширением .lib).

Поскольку рассматриваемый компилятор является программой, запускаемой из командной строки, то для того чтобы каждый раз не набирать эту командную строку, нужно подготовить bat-файл, в котором будут последовательно запускаться все необходимые утилиты. Как минимум, понадобятся два таких bat-файла: один для компиляции программ, работающих в консольном режиме, а второй - для программ с графическим интерфейсом Windows.

Особенностью компилятора фирмы Borland Inc. является то, что после компиляции исходного кода в объектный файл (.obj), он автоматически передает управление компоновщику для создания исполняемого файла (.exe). В силу этой особенности не следует в bat-файл помещать отдельный вызов компоновщика.

Исходя из вышесказанного, можно предложить следующие варианты bat-файлов (make_console.bat и make_gui.bat).

rem Файл make_console.bat
rem компиляция и компоновка консольных приложений
rem в Borland Builder C++ 5.5
rem объявление переменных
path C:\Borland\BCC55\bin;%path%
set include=C:\Borland\BCC55\include
set lib=C:\Borland\BCC55\lib
rem имя исходного файла (подразумевается расширение .cpp)
set app=hello
rem удаляем прежние результаты компиляции
if exist %appp%.exe del %app%.exe
if exist %appp%.obj del %app%.obj
rem запуск компилятора
bcc32.exe -I%include% -L%lib% %app%.cpp > errout.txt
rem Файл make_gui.bat
rem компиляция и компоновка GUI-приложений
rem в Borland Builder C++ 5.5
rem объявление переменных
path C:\Borland\BCC55\bin;%path%
set include=C:\Borland\BCC55\include
set lib=C:\Borland\BCC55\lib
rem имя исходного файла (подразумевается расширение .cpp)
set app=hello
rem удаляем прежние результаты компиляции
if exist %appp%.exe del %app%.exe
if exist %appp%.obj del %app%.obj
if exist %appp%.res del %app%.res
rem запуск компилятора ресурсов (подразумевается, что
rem файл ресурсов имеет то же имя,
rem что и файл с исходным кодом
if not exist %app%.rc goto compile
brc32.exe -r %app%.rc > errres.txt
:compile
rem запуск компилятора
bcc32.exe -tW -I%include% -L%lib% %app%.cpp > errout.txt

Обратите внимание, что и в файле make_console.bat и в файле make_gui.bat переменной app вы должны присвоить имя вашего исходного файла без расширения.

Результаты работы компилятора и компоновщика перенаправляются в текстовый файл errout.txt, который можно просмотреть любым текстовым редактором. Это делается на тот случай, если ваш скринридер плохо читает консольное окно Windows. Аналогичным образом результаты работы компилятора ресурсов перенаправляются в текстовый файл errres.txt.

Файлы make_console.bat или make_gui.bat следует поместить в рабочую (пользовательскую) папку, в которой находятся файл с исходным кодом, дополнительные include и lib-файлы и файл ресурсов, если он необходим для приложения с графическим интерфейсом Windows.

Для компиляции DLL в строке ключей (параметров) компилятора необходимо использовать ключ -tWD, а если необходима поддержка Unicode-строк, то следует добавить ключ -tWU, благодаря чему соответствующие макросы будут раскрываться в свои Unicode-варианты. Ключ -tWM указывает компилятору, что в приложении (а точнее, в run-time библиотеке C) должна поддерживаться многопоточность.

Кроме пакетных файлов, для указания пути к папкам, содержащим заголовочные и библиотечные файлы, можно использовать конфигурационные файлы. Это обычные текстовые файлы, которые можно создать и редактировать текстовым редактором. Содержание этих файлов следующее:

Файл BCC32.CFG (указаны пути к include и lib файлам):

-IC:\BORLAND\BCC55\INCLUDE
-LC:\Borland\BCC55\Lib

Файл ILINK32.CFG:

-LC:\Borland\BCC55\Lib

Оба файла нужно поместить в папку C:\BORLAND\BCC55\BIN.

Если предполагается использовать компилятор в учебном процессе, то рекомендуется папку C:\BORLAND\BCC55\ сделать недоступной для записи, чтобы обезопасить файлы компилятора от повреждений.

Файлы конфигурации с именами BCC32.CFG и ILINK.CFG могут находиться также в пользовательской папке. Эти файлы будут обработаны компилятором после файлов конфигурации, расположенных в папке C:\BORLAND\BCC55\BIN, и установки файлов из пользовательской папки заменят прежние установки конфигурации. Последними обрабатываются установки конфигурации, заданные в параметрах командной строки. Следовательно, они и будут самыми актуальными.

Начало работы

Консольное приложение

Первым приложением, разработанным с помощью компилятора Borland C++ будет консольное приложение, исходный код которого приведен ниже:

// Файл hello.cpp
#include <windows.h>
#include <stdio.h>
void main ()
{
char msg[256];
DWORD msg_size=sizeof(msg);
if(GetComputerName(msg, &msg_size))
printf ("Computer: %s\r\n", msg);
msg_size=sizeof(msg);
if(GetUserName(msg, &msg_size))
printf ("User : %s\r\n", msg);
if ( GetWindowsDirectory(msg, sizeof(msg))) {
	printf("Windows Dir: %s\r\n", msg);
}
if(GetSystemDirectory(msg, sizeof(msg))) {
	printf ("System Dir: %s\r\n", msg);
}
if (GetCurrentDirectory(sizeof(msg), msg)) {
	printf("Current Dir: %s\r\n", msg);
}
getchar();
} // main

Используя функции WinAPI, это приложение выводит на экран название компьютера, имя пользователя, путь к папке Windows, к системной папке и текущей папке. Приложение ожидает нажатия клавиши Enter, чтобы завершить свою работу.

Создайте пользовательскую папку, например, D:\MyProgs\demo\, в которую поместите файлы hello.cpp и make_console.bat. Запустите файл make_console.bat, после выполнения которого в пользовательской папке появятся файлы hello.obj, hello.exe и errout.txt. Если в папке не появились hello.obj или hello.exe, то это значит, что в процессе компиляции или компоновки возникли ошибки, о которых можно прочитать в файле errout.txt.

Разрабатывая консольные приложения, следует помнить, что вывод информации на экран происходит в кодировке OEM (ранее она называлась DOS-кодировкой). В OEM-кодировке коды букв русского алфавита отличаются от кодов, принятых в Windows (ANSI-кодировка), поэтому исходный код консольного приложения должен создаваться в текстовом редакторе который поддерживает работу с OEM-кодировкой. Если же ваш текстовый редактор поддерживает только ANSI-кодировку (Windows кодировку) или вы сознательно не хотите в исходном коде использовать OEM-кодировку, то для вывода информации, например, при помощи функции printf(), следует использовать функцию WinAPI ANSIToChar() для преобразования строки символов из ANSI-кодировки в OEM.

Ещё одной особенностью консольных приложений является то, что после выполнения приложения консоль сразу закрывается и невозможно скринридером прочитать результаты работы. Чтобы этого не случилос, нужно использовать функции ввода с клавиатуры, чтобы окно закрывалось только после нажатия клавиши (это может быть функция getchar()).

GUI приложение

В интернете немало примеров создания простого приложения, использующего графический интерфейс Windows (GUI приложение). Если вы достаточно опытны, то можете использовать эти примеры.

Исходный код, приведённый ниже, является ещё одним примером создания GUI приложения. Исполняемый файл (hello.exe), полученный в результате компиляции, при запуске открывает окно со строкой меню из двух пунктов: Файл и О программе. В меню Файл есть пункт Выход, при выборе которого приложение закрывается. При выборе меню О программе на экране появляется сообщение.

Создайте рабочую папку, например, d:\MyProgs\winhello\, и скопируйте туда файлы make_gui.bat и hello.cpp. текст которого приведен ниже:


// Файл hello.cpp
// Пример простого GUI приложения
#include <windows.h>
#include "resource.h"
// Подавляем лишние сообщения
#pragma warn -8057 
// Подключаем файл ресурсов
#pragma resource "hello.res"
// Объявляем функцию главного окна
LRESULT WINAPI WndProc(HWND, UINT, WPARAM, LPARAM);
// Глобальные переменные
// Название приложения
char szAppName[] = "AppHello";
// Заголовок главного окна приложения
char szAppTitle[] = "Hello - Window Application";
// Функция WinMain
int APIENTRY
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hWnd;
MSG msg;
// Регистрируем класс окна
memset(&wc, 0, sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = MAKEINTRESOURCE(IDM_MENU);
wc.lpszClassName = szAppName;
// Регистрация окна
if(!RegisterClassEx(&wc))
// В случае ошибки пытаемся зарегистрировать окно
// функцией RegisterClass
if(!RegisterClass((LPWNDCLASS)&wc.style))
return FALSE;
// Создание главного окна приложения
hWnd = CreateWindow(szAppName, szAppTitle,
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT,
0, NULL, NULL, hInstance, NULL);
if(!hWnd) return(FALSE);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// Цикл обработки сообщений
while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// Функция WndProc
LRESULT WINAPI
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
case WM_DESTROY: {
	PostQuitMessage (NULL);
	break;
}
case WM_COMMAND: {
switch (wParam) {
case IDI_EXIT: 
{	DestroyWindow(hWnd); break;}
case IDI_ABOUT: 
{MessageBox(hWnd, "Нажмите кнопку Ок.", "Hello!", MB_OK); break;}
}
	break;
}
default:
	return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return 0;
}

Кроме файла hello.cpp, необходим файл resource.h:

// Заголовочный файл resource.h, содержащий
// определения идентификаторов меню и его пунктов
#define IDM_MENU 1000
#define IDI_EXIT 1001
#define IDI_ABOUT 1002

Также необходим файл описания ресурсов hello.rc, который передается компилятору ресурсов для создания файла ресурсов hello.res:


// Файл описания ресурсов hello.rc
#include "resource.h"
IDM_MENU MENU
{
POPUP "&Файл"
{
MENUITEM "Вы&ход", IDI_EXIT
}
MENUITEM "&О программе", IDI_ABOUT
}

Таким образом, в рабочей папке должны находиться файлы hello.cpp, resource.h, hello.rc и make_gui.bat. После запуска make_gui.bat в папке появятся файлы hello.obj, hello.res, hello.exe. Отсутствие какого-либо из этих файлов говорит об ошибке, информацию о которой можно получить виз файлов errout.txt и errres.txt.

Следует отметить, что компилятор Borland C++ позволяет в тексте исходного кода указывать компоновщику, какие файлы ресурсов и библиотек нужно добавить к исполняемому файлу.

Файл ресурсов присоединяется директивой:

#pragma resource "имя_файла.res"

Файл библиотеки присоединяется директивой:

#pragma link "имя_файла.lib"

Параметры командной строки

Практически все программы, входящие в состав пакета (расположены в папке bin\), выводят на экран текстовую подсказку, если их запустить без ключей в командной строке. Для того чтобы сохранить выводимую на экран информацию в файл, используйте перенаправление вывода. Например, для компилятора это можно сделать так:

bcc32.exe >> bcc_cmd.txt 

После чего можно ознакомиться с содержимым файла bcc_cmd.txt, открыв его в текстовом редакторе. Параметры командной строки компилятора (ключи) будут расположены в два столбца, что следует учитывать, читая этот текст скринридером.

Метки

Windows, Разработка


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024