Особенности создания функций для включения их в 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.