Ассемблер для Windows

       

Мы здесь рассмотрим только вызывающую программу



III

Хотя я указал, что, на мой взгляд, неявное связывание менее гибко, я нашел необходимым привести пример неявного связывания. Мы здесь рассмотрим только вызывающую программу, так как вызываемая программа, естественно не меняется. Как видите, текст программы стал несколько проще. Здесь важно заметить, что, во-первых, необходимо объявить вызываемую из динамической библиотеки процедуру как внешнюю, а, во-вторых, подключить статическую библиотеку DLLP1.LIB.

.386P ; плоская модель IFDEF MASM .MODEL FLAT, stdcall ELSE .MODEL FLAT ENDIF

; константы ; прототипы внешних процедур includelib dll1.lib IFDEF MASM ; MASM EXTERN DLLP1@0:NEAR EXTERN ExitProcess@4:NEAR ; директивы компоновщику для подключения библиотек includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib ELSE ; директивы компоновщику для подключения библиотек includelib c:\tasm32\lib\import32.lib EXTERN DLLP1:NEAR EXTERN ExitProcess:NEAR DLLP1@0 = DLLP1 ExitProcess@4 = ExitProcess ENDIF

;----------------------------------------------------- ; сегмент данных _DATA SEGMENT DWORD PUBLIC USE32 'DATA' _DATA ENDS ; сегмент кода _TEXT SEGMENT DWORD PUBLIC USE32 'CODE' START: PUSH 1 ; параметр CALL DLLP1@0 ; выход _EXIT: PUSH 0 CALL ExitProcess@4 _TEXT ENDS END START



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