Сборник по задачам и примерам Assembler

     

Сборка приложения с использованием DLL-библиотеки



Шаг 4. Сборка приложения с использованием DLL-библиотеки

Приведем содержимое make-файла для сборки целевого приложения:

NAME = maket

OBJS = $(NAME).obj

DEF = $(NAME).def

lif Sd(DEBUG)

TASMDEBUG=/zi

LINKDEBUG=/v

'.else

TASMDEBUG=

LINKDEBUG=

lendif

TASMOPT=/m3 /z /q # /DWINVER=0400 /D_WIN32_WINNT-0400



# /mx

lif Sd(MAKEDIR)

IMPORT=$(MAKEDIR)\import32+maket_dll

lelse

IMPORT=import32+maket_dl1

lendif

$(NAME).EXE: $(OBJS) $(DEF)

tlink32 /Tpe /aa /x /c $(LINKDEBUG) $(OBJS).$(NAME).. $(IMPORT). $(DEF) .asm.obj:

del $(NAME).EXE

tasm32 $(TASMDEBUG) /ml $(TASMOPT) $&.asm...

Теперь, имея два make-файла (для сборки файлов .dll и .ехе ), можно провести сравнительный анализ их содержимого. Отметим два момента:

Ш в макропеременной IMPORT указываются имена (без расширений) LIB-фай-лов, содержащих сведения о нужных приложению функциях в DLL-библиотеках (если LIB-файлов несколько, то они перечисляются с использованием знака +);

ш для сборки ехе-приложения используется ключ компоновщика. Содержимое DEF-файла maket.def приложения:

NAME maket

DESCRIPTION 'Assembly Console Windows Program'

CODE PRELOAD MOVEABLE DISCARDABLE

DATA PRELOAD MOVEABLE MULTIPLE

EXPORTS

И наконец, содержимое самого файла maket.asm, использующего функцию из разработанной нами DLL-библиотеки maket_dll.dll.

: maket.asm - программа, вызывающая функцию WriteCon из файла maket_dll.dll

includelibmaket_dll .lib необязательно

.data

TitleText db "Строка выводится процедурой из DLL"

Lenjitl eText-$ - Ti tl eText

.code

start proc near ;точка входа в программу:

:работаем .........

push Len_TitleText

push offset TitleText

call WriteCon exit: ;выход из приложения

Импортируемую из DLL-библиотеки функцию необходимо объявить внешней директивой extrn WriteCon:PROC.



Содержание раздела