Главная » Статьи » О том о сем...

Установка и настройка бесплатного компилятора Borland С++ 5.5
Источник: http://www.tiflocomp.ru/docs/programming/bcc_free.php Автор: Анатолий Камынин

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


Языки программирования C и C++ составляют основу многих средств разработки приложений для операционных систем семейства Microsoft Windows. Подавляющее число примеров, содержащихся в руководствах по программированию в среде Windows, составлены на языках программирования C и C++. Если вы решили программировать на этих языках, то вам необходим набор программ (компилятор, компоновщик, отладчик и т.п.), позволяющих получать работоспособные программы, то есть исполняемые файлы. В качестве средства разработки может быть использован свободно распространяемый фирмой Borland Software Corporation. набор программ под общим названием Borland Builder C++ 5.5 command line tools .

Особенностью этого программного продукта, кроме бесплатной лицензии, является отсутствие интегрированной визуальной среды разработки и библиотек компонентов, входящих в состав полного коммерческого продукта Borland Builder C++. Однако в бесплатный пакет входят почти все заголовочные и библиотечные файлы, необходимые для разработки 32-разрядных приложений под Windows. Отсутствующие библиотеки импорта можно получить, воспользовавшись утилитой implib.exe, входящей в этот пакет. Кроме того, пакет не содержит подробной документации, но материалов по программированию на Win32 API достаточно много в интернете, как и документации по директивам компилятора Borland C++.

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

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

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


Компилятор, запускаемый из командной строки, а также дополнительные утилиты к нему, объединенные названием Borland С++ 5.5 command line tools, можно получить на сайте Borland Software Corporation на странице C++ Compiler 5.5. Для того чтобы получить доступ к инсталляционному пакету, необходимо пройти регистрацию.

Время от времени сайт компании претерпевает некоторые изменения и точный адрес страницы может поменяться, поэтому если указанный адрес стал ошибочным, то ищите на сайте компании www.borland.com.

Последние из действующих прямых ссылок на загрузку дистрибутива были:
Borland С++ 5.5 command line tools
Отладчик TurboDebugger.

Также можно поискать на сайтах, распространяющих свободный или условно свободный софт

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


Для установки компилятора на ваш компьютер, следует запустить файл 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).

Code
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


Code
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 файлам):

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


Файл ILINK32.CFG

Code
-LC:\Borland\BCC55\Lib


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

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

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


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

Code
// Файл 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. текст которого приведен ниже:

Code
// Файл 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, содержащий
// определения идентификаторов меню и его пунктов
Code
#define IDM_MENU 1000
#define IDI_EXIT 1001
#define IDI_ABOUT 1002


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

// Файл описания ресурсов hello.rc

Code

#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, открыв его в текстовом редакторе. Параметры командной строки компилятора (ключи) будут расположены в два столбца, что следует учитывать, читая этот текст скринридером.

Документацию по работе с Borland C++ Builder 5 можно получить на странице C++Builder 5 product documentation.
Категория: О том о сем... | Добавил: hаav (12.06.2011)
Просмотров: 7133 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]