Страница 1 из 1

Dll?

Добавлено: 23 май 2007, 05:54
Oleg_Rus
Подскажите, как создаются и подключаются Dll-ки в Dlphi?

Dll !

Добавлено: 23 май 2007, 09:45
BBB
Oleg_Rus писал(а):Подскажите, как .... подключаются Dll-ки в Dlphi?
Подключаются с помощью создания модуля(unit)-"переходника". Разумеется, надо знать именя функций, экспортирунемых DLL-ю, набор их параметров и их calling convention.

Примером такого модуля-переходника может служить дельфийный Windows.pas. Хотя там много всего и, быть может, нелегко будет понять, что к чему.
Если коротко, то вот такой более простой пример.

Скажем, некоторая MyCPPdll.DLL экспортирует функцию DoSomething,
реализованную как:

Код: Выделить всё

  long WINAPI DoSomething (
                  ULONG   uiMode,
                  void*     pData,
                  char    *pacMsg
     );

Тогда модуль-переходник будет выглядеть так:

Код: Выделить всё

unit MyDLL_U;

 //****************************************************
                     interface
 //****************************************************

 function DoSomething (
                  uiMode : Longword;
                  pDIB : pointer;
                  pacMsg : PChar) : longint; stdcall;

 //****************************************************
                   implementation
 //****************************************************

 function DoSomething (
                  uiMode : Longword;
             var  pDIB : pointer;
                  pacMsg : PChar) : longint;
     stdcall; external 'MyCPPdll.DLL' name 'DoSomething';

end.

Re: Dll?

Добавлено: 23 май 2007, 10:28
Хыиуду
Если создать длл - открыть новый проект Дельфи, потом открыть dpr-файл, удалить оттуда все и записать примерно так:
library moya_biblioteka;

interface
procedure helloworld;

exports helloworld name 'helloworld' index 1

implementation
procedure helloworld;
begin showmessage('Hello, World!'); end;

end.

После компиляции образуется файл moya_biblioteka.dll

Потом в своей программе пишем:

procedure helloworld; external; 'moya_biblioteka.dll';

и можно пользоваться процедурой.
Если где-то напутал в синтаксисе - не взыщите

Re: Dll?

Добавлено: 23 май 2007, 13:26
Игорь Акопян
в дополнение....
&quot писал(а):открыть dpr-файл, удалить оттуда все и записать примерно т
если это сделать через File/New... То в теле проекта можно обнаружить весьма полезный начинающему коментарий ;)