W pliku DLL chcę wywołać funkcję znajdującą się w pliku EXE:
W DLL'u wygląda to tak:
[...]
var PokazOkno: procedure(i:integer);
begin
@PokazOkno := GetProcAddress(ExeHandle, 'PokazOkno');
if Assigned(@PokazOkno) then
PokazOkno(1)
else
MessageBox(0, 'Nie ma tej procedury', '',0);
end;
[...]
Zmienna ExeHandle zawiera uchwyt do formy w EXE (Form1.Handle) przy ładowaniu biblioteki.
W pliku EXE procedura ta wygląda tak:
procedure PokazOkno(i:integer);
begin
ShowMessage('Jakiś komunikat '+IntToStr(i));
end;
I niestety to mi nie działa. W DLL'u zawsze mam ten komunikat, że 'Nie ma tej procedury'.
Co zrobić, żeby DLL "widział" tę procedurę w pliku EXE?
Próbowałem dopisywać do: procedure PokazOkno(i:integer); stdcall; itp.
ale ciągle jej nie widzi. Może trzeba ją gdzieś dopisać też przed implementation?
Co jest nie tak?