Это не гайд по созданию библиотек функций на Delphi. Я предлагаю готовый каркас, с которого удобно начать написание. Если вы не пишите каждый день новую DLL на delphi, то наверняка у вас возникают определенные трудности с тем как начать.
Для начала нужно выбрать правильный тип проекта.
Идем в меню File -> New -> Other.
Как видите в данном примере — это delphi-семерка. Выбираем новый «DLL Wizard» и жмем ОК.
В редакторе появляется шаблон кода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
library Project1; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses SysUtils, Classes; {$R *.res} begin end. |
В шаблоне даются некоторые советы, связанные с использованием паскалевских типов данных. В частности важное замечание — «Чтобы избежать использования BORLNDMN.DLL, используйте строковые параметры вызова только типа PChar или ShortString.» Иначе, использовать вашу DLL где то на другом компьютере, где нет библиотеки BORLNDMN.DLL, будет нельзя.
В следующем примере мы объявляем в библиотеке две функции, одна из них будет доступна внешним приложениям (power3), а другая — нет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
library Project2; //тут можно вставить секцию uses, //но для моего примера что либо подключать не требуется {$R *.res} //это ваши функции //их нужно объявить после $R *.res function power2(x: real): real; stdcall; begin power2:= x * x; end; function power3(x: real): real; stdcall; begin power3:= power2(x) * x; end; //здесь вы можете указать, какие из ваших функций //будут видны для внешнего вызова из DLL Exports power3; begin //здесь пишется код, который выполняется при инициализации DLL end. |
Вот и все.
Как только вы откомпилируете код и запустите билдер (меню Project -> Build), в папке появится файл с расширением *.DLL.