Проблемы с получением данных из DLL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблемы с получением данных из DLL

Сообщение Mad_Scientist » 30.09.2010 10:42:41

Доброго времени суток.

Обнаружил глюк в Лазарусе. Возникает при попытке скомпилировать вызов функции из 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"
Кто знает что я делаю не так?
Mad_Scientist
незнакомец
 
Сообщения: 1
Зарегистрирован: 30.09.2010 09:54:43

Re: Проблемы с получением данных из DLL

Сообщение Mr.Smart » 30.09.2010 10:56:00

Код: Выделить всё
N:=OpenDevice();
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru