Обнаружил глюк в Лазарусе. Возникает при попытке скомпилировать вызов функции из DLL
- Код: Выделить всё
type
TOpenDevice = function:Longint;stdcall;
var
OpenDevice:TOpenDevice;
function LoadK8061(out Handle:THandle):cardinal;
//функция загружает библиотеку и подключает все функции
begin
Handle:=SafeLoadLibrary('K8061.dll'); //Динамически подключаем библиотеку
if Handle>32 then
begin
result:=0;
OpenDevice:=TOpenDevice(GetProcAddress(Handle,'OpenDevice'));
if @OpenDevice=nil then result:=2;
{.......}
end
else
begin
result:=1;
end;
end;
Если вызываем функцию без требования вернуть результат:
- Код: Выделить всё
OpenDevice;
То все компилируется нормально, а если с результатом
- Код: Выделить всё
N:=OpenDevice;
то компилятор отругивается ошибкой типа:
unit1.pas(157,8) Error: Incompatible types: got "<procedure variable type of function:LongInt;StdCall>" expected "LongInt"
Кто знает что я делаю не так?