Главная » Delphi » Одним выстрелом — двух зайцев: EXE и DLL

0

Как  уже упоминалось, один  набор  модулей  с исходным кодом  можно  применять для создания мастера и в виде  библиотеки DLL,  и в виде  отдельного исполняемого файла  EXE. Это  оказывается возможным, если  в файле проекта использовались ди рективы компилятора. В листинге 17.5 содержится исходный код файла  проекта Wiz- Wiz.dpr, применяемого для создания мастера Wizard.

Листинг 17.5. WizWiz.dpr — основной  файл проекта мастера Wizard

{$ifdef BUILD_EXE}

1      program WizWiz;    // Создать как EXE

{$else}

library WizWiz;          // Создать как DLL

{$endif}

uses

{$ifndef BUILD_EXE}

ShareMem,                       // Для DLL необходим модуль ShareMem

InitWiz in ‘InitWiz.pas’, // Содержимое мастера Wizard

ToolsAPI,

{$endif}

Forms,

Main in ‘Main.pas’ {MainForm},

AddModU in ‘AddModU.pas’ {AddModForm};

{$ifdef BUILD_EXE}

{$R *.RES}                              // Необходим для EXE

{$else}

exports                                 // Необходим для DLL

InitWizard name WizardEntryPoint;        // Необходимая точка входа

{$endif}

begin

{$ifdef BUILD_EXE}                       // Необходим для EXE…

Application.Initialize;

Application.CreateForm(TMainForm, MainForm);

Application.Run;

{$endif}

end.Как видно  из приведенного кода,  при  построении этого  проекта будет создан  ис полняемый файл,  если определено условие компиляции BUILD_EXE. В противном случае будет построен мастер  DLL. Условие  компиляции задается в списке  Conditional Defines, расположенном во  вкладке  Directories/Conditionals диалогового окна  Project Options (рис. 17.6).

Еще одно,  заключительное, замечание по материалам рассмотренного проекта от носится к функции InitWizard() из модуля IntWiz, экспортируемой в разделе ex- ports файла   проекта. Эту  функцию  необходимо  экспортировать  под  именем  Wiz- ardEntryPoint, определенным в модуле ToolsAPI.

Рис. 17.6. Диалоговое окно Project Options

CОВЕТ

Компания Borland не внесла файл ToolsAPI.dcu в комплект поставки. Это означает, что мастера DLL и ЕХЕ, содержащие в операторе uses ссылки на модуль ToolsAPI, могут быть построены лишь с помощью пакетов. В настоящее время без пакетов мас- тер построить нельзя.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии