Цитата:
Сообщение от vl1639
Функции DLL , созданные в какой среде более универсальны, т.е. могут использоваться во всех языках, включая Маткад и пр. Или в Дельфи достаточно указать директиву стандартного вызова и остальное не брать в голову.
|
это неправильное суждение, функции везде одинаковые, различие лишь в способе очистке стеков, ведь что такое DLL? - это тот же машинный код как и ЕХЕ. Вы вообще пробовали или пока что только теорию шпрэхайте?
Вот так в DLL записывается внешние функции:
Код:
...
function Subtract(a,b: Integer): Integer; stdcall;
begin
Result := a - b;
end;
...
exports Subtract;
...
А так читаются из DLL:
Код:
...
function Subtract(a,b: Integer): Integer; external 'mylib.dll';
...
или так:
Код:
...
const
mylib = 'mylib.dll';
...
var
extfunc: function(a,b: Integer): Integer; external mylib;
...
procedure TForm1.FormCreate(Sender: TObject);
var
lib: Cardinal;
begin
lib := LoadLibrary(mylib);
try
extfunc := GetProcAddress(lib,pchar('Subtract'));
finally
FreeLibrary(lib);
end;
end;
...