Wywołanie DLL z DLL

0

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

0

kod

0
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ę ;)

0
  1. sharemem jest?
  2. jaki błąd?
  3. czemu nie sprawdzasz czy DLLka <> 0
0

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

0
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

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.

0

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

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