Программирование на Ассемблере

       

Особенности создания функций для включения их в DLL


Для включения функции в DLL в качестве экспортируемых функций директива PUBLIC должна быть заменена директивой PUBLICDLL.

Пример. Создать экспортируемую функцию для вычитания целых чисел, которая должна входить в DLL как экспортируемая функция. Пусть функция удовлетворяет соглашению по вызову extern “C”:

Файл с функцией proc.asm

;extern C

ideal

p586

model flat

codeseg

proc    _substract3

publicdll  _substract3

arg     a:dword, b:dword, c:dword=s

push    ebp

mov     ebp, esp



push    esi

mov     esi, [a]

sub     esi, [b]

mov     ecx, [c]

mov     [ecx], esi

pop     esi ebp

ret

endp

end

Главная программа, использующая функцию substract3:

#pragma hdrstop

#pragma argsused

#include <iostream.h>

extern "C"  __declspec (dllimport) int substract3 (int, int, int *);

int main(int argc, char* argv[])

{

        int z;

        substract3 (5, 3, &z);

        cout << z;

        char c;

        cin>>c;

        return 0;

}

//---------------------------------------------------------------------------

К проекту долженбыть поключен файл с расширением LIB, соответствующий сформированной DLL.

Аналогично можно использовать DLL библиотеку в режиме загрузки с помощью функции Load Library.



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