Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кетков.doc
Скачиваний:
17
Добавлен:
27.09.2019
Размер:
2.22 Mб
Скачать

12.2. Организация пользовательских библиотек

Любую функцию, написанную на языке C или C++ можно автономно откомпилировать и получить объектный модуль, который впоследствии можно присоединять к любому проекту. Естественно, что объектный модуль может оказаться полезным в последующей разработке программ, если он тщательно отлажен. Чтобы не хранить большое количество отдельных объектных файлов, их можно с помощью утилиты tlib.exe объединить в библиотеку. Любая библиотека может быть присоединена к проекту вновь разрабатываемой программы. Этими возможностями нужно обязательно пользоваться при разработке больших программных систем.

Для создания новой библиотеки достаточно добавить один или несколько объектных модулей к библиотечному файлу. Если такой библиотеки еще не было, то она будет создана. Пусть, например, в текущем каталоге находятся три объектных модуля с именами q1.obj, q2.obj и q3.obj. Для того чтобы создать в этом же каталоге новую библиотеку с именем qqq.lib, выполнить следующую команду:

>tlib qqq +q1 +q2 +q3

Если нам потребуется заменить модуль q1.obj на исправленную версию q1.obj, добавить модуль q4.obj и одновременно удалить из библиотеки модуль q2.obj, то это можно сделать следующим образом:

>tlib qqq -+q1 +q4 -q2

Если количество одновременно подключаемых модулей достаточно велико, то командной строки, ограниченной 127 символами, может не хватить. В этом случае обычно создают текстовый файл из строк вида:

+q1 +q2 +q3 ... +q15 &

+q16 +q17 ... +q30 &

+q31 +q32 ....

В конце каждой строки записывается символ &, который играет роль знака переноса. Если созданный таким образом файл имеет имя qq.txt, то запуск утилиты tlib выглядит следующим образом:

>tlib qqq @qq.txt

Подключение заранее изготовленных объектных модулей или извлечение нужных модулей из присоединяемых библиотек можно выполнить как в интегрированной среде, так и с помощью автономной утилиты tlink.exe, запускаемой из командной строки.

В интегрированной среде BC 3.1 файл проекта имеет расширение .prj (от project – проект). Автоматически он не создается, т.к. большинство небольших программ состоит из единственного программного файла и кроме системных компонент (библиотек и объектных модулей) ничего другого не использует. Однако в случае необходимости мы можем открыть файл проекта с помощью команды Project Open project (если он еще не существовал, то будет создан заново) и добавить к нему нужные компоненты с помощью команд ProjectAdd item.

В интегрированной среде BCB файл проекта создается автоматически и имеет расширение .bpr (от Builder Project). Команда Add to Project в меню Project предназначена для добавления в состав проекта новых объектных модулей и библиотек.

Автономный редактор связей tlink.exe запускается из командной строки со следующим набором возможных параметров:

>tlink /k1 /k2 ,q1 q2 ,eq,mq,lib1 lib2

Здесь /k1 /k2... – набор ключей, управляющих работой tlink;

q1 q2 – список объектных модулей, включая и головную функцию main;

eq – имя исполняемого модуля;

mq – имя модуля, в который записывается "карта" памяти;

lib1 lib2 – имена подключаемых библиотек.

Перечень ключей программа tlink.exe выдает после запуска без параметров. Их расшифровка приведена в табл. 12.2. Расширения имен файлов, если они стандартные, можно опускать (.obj – объектные модули, .exe – исполняемый модуль, .map – файл "карты" памяти, .lib – библиотечный файл). "Карта" памяти или таблица распределения памяти содержит информацию о размещении функций и глобальных переменных в сегментах памяти.

Таблица 12.2

Ключ

Пояснение

/m

Выдача "карты" памяти со всеми общедоступными именами

/x

Запрет вывода "карты" памяти

/i

Инициализация всех сегментов данных

/l

Подключение номеров строк исходных программ

/s

Вывод подробной "карты" памяти сегментов

/n

Отключение библиотек по умолчанию

/d

Выдача предупреждений о дублировании имен в библиотеках

/c

Режим различения больших и малых букв

/3

Разрешение использовать 32-битные операнды и команды

/v

Сохранение дополнительной информации для отладки

/e

Игнорирование расширенных словарей в библиотеках

/t

Создание com-файла вместо exe-файла