На этом шаге мы рассмотрим общие правила использования библиотек.
В процессе разработки программы к ней можно подсоединять не только объектные модули, но и библиотеки. Собственно, если объектных модулей несколько, то это, по понятным причинам, вызывает определенные неудобства. Поэтому объектные модули объединяются в библиотеки.
Для подсоединения библиотеки в MASM удобнее всего использовать директиву INCLUDELIB, которая сохраняется в объектном коде и используется программой LINK.EXE.
Но как создать библиотеку из объектных модулей? Для этого имеется специальная программа, называемая библиотекарем. Предположим, мы хотим создать библиотеку LIB1.LIB, состоящую из одного модуля - PR0G2_1.OBJ (там находится внешняя процедура). Выполним для этого следующую команду:
LIB /OUT:LIB1.LIB PROG2_1.OBJ
Если необходимо добавить в библиотеку еще один модуль (MODUL.OBJ), то достаточно выполнить команду:
LIB LIB1.LIB MODUL.OBJ
Вот еще два полезных примера использования библиотекаря:
Вернемся теперь к нашему примеру. Вместо объектного модуля мы используем теперь библиотеку LIB1.LIB. Видоизмененный текст программы PROG2_2.ASM представлен ниже:
.386P ;Плоская модель памяти. .MODEL FLAT, STDCALL ;----------------------------- ;Прототип внешней процедуры. EXTERN PROC1@0:NEAR ;----------------------------- INCLUDELIB LIB1.LIB ;----------------------------- ;Сегмент данных. _DATA SEGMENT DWORD PUBLIC USE32 'DATA' _DATA ENDS ;----------------------------- ;Сегмент кода. _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: CALL PROC1@0 RET ;Выход. _TEXT ENDS END START
Для получения выполняемого файла PROG2_2.EXE нужно выполнить команду:
LINK /SUBSYSTEM:WINDOWS PROG2_2.OBJ
На следующем шаге мы рассмотрим вопросы, связанные с размещением данных во внешних модулях.