Покупка

Вопросы

Проблемы

История

Загрузка

 
ПРОБЛЕМЫ

 

В данном разделе будут рассматриваться наиболее важные вопросы, с которым столкнулся автор и решение которых может предложить любой желающий. Благодарность гарантируется.

1. Как подключить 16-битовую библиотеку к 32-разрядному приложению для последующего вызова подпрограмм?

Теория. Для подключения библиотеки к приложению существует, по крайней мере, 2 известных способа - статический и динамический. Подключение DLL-библиотеки первым способом осуществляется инициализацией необходимой подпрограммы, вызываемой из DLL, в модуле проекта, т.е.

procedure SomeDLLProcedure; external 'LIBRARY.DLL' index 1;

Рассмотрим второй способ привязки - динамический.
В модуле проекта напишем примерную процедуру вызова подпрограммы из DLL.

procedure LoadLibrary;
type TMyProc = Procedure;
var
  Handle : THandle;
  MyProc : TMyProc;
begin
  Handle := LoadLibrary('LIBRARY.DLL');
  if Handle < 32 then Exit;
  @MyProc := GetProcAddress(Handle, 'LIBRARY.DLL');
  . . .
  FreeLibrary(Handle);
end;

Однако, при подключении вышеуказанными способами 16-битовой библиотеки выдаются поочередно ошибочные сообщения: "Ошибка при запуске программы. Файл С:\LIBRARY.DLL по-видимому поврежден. Заново установите файл и повторите попытку." и далее "Присоединенное к системе устройство не работает".

Если кто сталкивался с подобной ситуацией и желает помочь - направляйте решение данной проблемы на email getask@mail.ru?subject=getask_DLL