Unit загрузки и проверки DLL
| Код | unit Plugin; interface uses Windows, ProFun;
procedure LoadPlugin; function LoadLib(NameLib:PAnsiChar):Boolean;
implementation uses UnitCalculator;
procedure LoadPlugin; var Lib:PAnsiChar; S:String; begin S:='Test.dll'; Lib:=PChar(S); if LoadLib(Lib) then MessageBox(0,'Запись в фаил','сообщение',MB_OK); end;
function LoadLib(NameLib:PAnsiChar):Boolean; var LibHandle:THandle; LibLoad:Boolean; begin Result:=False; LibHandle:=0; LibHandle:=LoadLibrary(NameLib); try if LibHandle=0 then MessageBox(0,'Библиотека не загружена','сообщение',MB_OK) else begin MessageBox(0,'Библиотека загружена','сообщение',MB_OK); if LibLoad then begin MessageBox(0,'Функция найдена','сообщение',MB_OK); Result:=True; end else begin MessageBox(0,'Функция не найдена','сообщение',MB_OK); Result:=False; end; end; finally FreeLibrary(LibHandle); end; end; end.
|
Тестовая библиотека.
| Код | library Test; uses Windows; function LibLoad:Boolean; begin LibLoad:=False; end; exports LibLoad; begin end.
|
Я загружаю библиотеку протом вызывю её и она должна мне передать False т.е. программа должна мне выдать сообщение что 'Библиотека загружена' и 'Функция не найдена' а он мне пишет что 'Функция найдена' т.е. получается что мая функция
постоянно возвращает True
Также я переименовал функцию
| Код | library Test; uses Windows; function LibL1oad:Boolean; begin LibL1oad:=False; end; exports LibL1oad; begin end.
|
А она всёраано пишет что 'Функция найдена'.
Где уменя ошибка и как надо правильно делать |