Dynamiczna funkcje w bibliotece dll

0

Hej!

Mam problem z tworzniem własnej biblioteki dll... Chciałbym żebym wywoływał funkcje z biblioteki wprowdził do neij zmienne i otrzymał rezultat... Hmm nie zrozumiałe podam przykład :) Jak zaaplikowąc np.: taką funkcje do dll i jak wywloac ja w programie

function adding (wartosc1, wartosc2 : integer) : integer;
begin

adding := wartosc1 + wartosc2;

end;

jest tu artykuł o dll ale nie uwzględniał takiej kwestii...
PS. Biblioteka mi sie kompiluje ale nie iwem jak to podczepić w programie :(

0

http://4programmers.net/article.php?id=30
Poczytaj: importowanie procedur z bibliotek.

Gdy juz wczytasz procedure. Mozesz ja wykonac. Potem sprawdzasz jaki zwraca wynik i na podstawie wyniku wykonujesz jakas akcje.

0
function adding (wartosc1, wartosc2 : integer) : integer;
begin
result := wartosc1 + wartosc2;
end; 

exports
adding;

A w aplikacji dajesz taki kod:

var
uchwyt:THandle;
adding:function(wartosc1, wartosc2 : integer) : integer; stdcall;
x:integer;

begin
uchwyt:=LoadLibrary('nazwabiblioteki.dll');
@adding:=GetProcAddress(uchwyt,'adding');
x:=adding(10,15); //tutaj wywołanie funkcji
end;

//Pisałem z pamięci ale myślę że powinno działać :)

0

Nie znam się specjalnie na tym, ale jak na moje to trzeba dodać jeszcze odpowiednią klauzulę tu i tam - jako info, że jest to funkcja zewnętrzna: external ?

0
Deti napisał(a)

Nie znam się specjalnie na tym, ale jak na moje to trzeba dodać jeszcze odpowiednią klauzulę tu i tam - jako info, że jest to funkcja zewnętrzna: external ?

Nie, ale dobrze by bylo zadeklarowac procedury z stdcall, ktorego uzywa caly windows, wiec zeby to bylo kompatybilne :P

0

Dodatkowo do kazdej funkcji exportowanej na sam koniec dla przyzwoitosci trzeba dorzucic stdcall;

1 użytkowników online, w tym zalogowanych: 0, gości: 1