Dll?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
Подскажите, как создаются и подключаются Dll-ки в Dlphi?
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Подключаются с помощью создания модуля(unit)-"переходника". Разумеется, надо знать именя функций, экспортирунемых DLL-ю, набор их параметров и их calling convention.Oleg_Rus писал(а):Подскажите, как .... подключаются Dll-ки в Dlphi?
Примером такого модуля-переходника может служить дельфийный 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.
Если создать длл - открыть новый проект Дельфи, потом открыть 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';
и можно пользоваться процедурой.
Если где-то напутал в синтаксисе - не взыщите
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';
и можно пользоваться процедурой.
Если где-то напутал в синтаксисе - не взыщите
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
в дополнение....

если это сделать через File/New... То в теле проекта можно обнаружить весьма полезный начинающему коментарий" писал(а):открыть dpr-файл, удалить оттуда все и записать примерно т

