Witam,
napisałem DLL'kę i chcę żeby ona wywołała jakąś procedurę z innej DLL'ki. Z poziomu programu wywołuję pierwszą DLL'kę a drugiej już nie mogę. Możecie mo coś doradzić??
Pozdrawiam
Witam,
napisałem DLL'kę i chcę żeby ona wywołała jakąś procedurę z innej DLL'ki. Z poziomu programu wywołuję pierwszą DLL'kę a drugiej już nie mogę. Możecie mo coś doradzić??
Pozdrawiam
kod
procedure wywolajDLL(wiad:String);
var
DLLka:THandle;
procedura_z DLL:procedure;
nazwaDLLTmp:String;
nazwaDLL:PAnsiChar;
begin
nazwaDLLTmp:=Trim(wiad)+'.dll';
nazwaDLL:=PAnsiChar(nazwaDLLTmp);
DLLka:=LoadLibrary(nazwaDLL);
try
@procedura_zDLL:=GetProcAddress(DLLka,nazwaDLL);
if @procedura_zDLL=nil then Raise Exception.Create('Nie można załadować procedury z '+nazwaDLL);
procedura_zDLL;
finally
FreeLibrary(DLLka);
end;
end;
A teraz legenda ;) :
procedura_z DLL - nazwa procedury wywoływanej z 2-giej DLL'ki
wiad - parametr przekazany do 1-ej DLL'ki (zawiera część nazwy wywoływanej DLL'ki - bez rozszerzenia)
P.S.
Misiek,
dzięki za szybką reakcję ;)
Obie DLL'ki pochodzą z Delphikowego krestora, więc sharemem jest. A błąd ten: @procedura_zDLL=nil then Raise Exception.Create('Nie można załadować procedury z '+nazwaDLL);
czyli nie znajduje wskazanej procedury. Aha DLL'ki są wywoływane dynamicznie
ratt napisał(a)
Obie DLL'ki pochodzą z Delphikowego krestora, więc sharemem jest.
o ile pamiętam kreator NIE dodaje sharemem do uses
A błąd ten: @procedura_zDLL=nil then Raise Exception.Create('Nie można załadować procedury z '+nazwaDLL);
czyli nie znajduje wskazanej procedury.
równie dobrze może nie ładować biblioteki - DLLka = 0
Misiekd napisał(a)
ratt napisał(a)
Obie DLL'ki pochodzą z Delphikowego krestora, więc sharemem jest.
o ile pamiętam kreator NIE dodaje sharemem do uses
A błąd ten: @procedura_zDLL=nil then Raise Exception.Create('Nie można załadować procedury z '+nazwaDLL);
czyli nie znajduje wskazanej procedury.równie dobrze może nie ładować biblioteki - DLLka = 0
Dzięki, faktycznie w uses nie ma z automatu sharemem. Zaraz dodam i sprawdzę. Pozostaje jeszcze możliwość, że używam stringa a nie Pchara albo shortstringa. Dopiero doczytałem.
Jeszcze raz dzięki.
Misiek, to jednak nie ShareMem ani stringi. Chodziło o podanie pełnej ścieżki do drugiej DLL'ki. A myślałem, że jak obie są w tym samym katalogu to się znajdą.
Dziękli