Return 1;

}

//-------------------------------------------------------------------------

void Message(char *s)

{

i=10;

Application->MessageBox(s,"From DLL",IDOK);

}

Файл P.h

#if defined(BUILD_DLL)

# define DLL_EXP __declspec(dllexport)

#else

# if defined(BUILD_APP)

# define DLL_EXP __declspec(dllimport)

# else

# define DLL_EXP

# endif

#endif

DLL_EXP void Message(char *s);

DLL_EXP int i;

Скомпилируйте проект.

Если вы нажмете Run то после завершенния построения будет выдано сообщение что данная программа не можнт быть исполнена (естественно).

Теперь напишем вызывающую программу. В томже каталоге создайде новый проект (File / New Application) в форму поместите одну кнопку и создай обработчик события OnClick. Ваш исполняемый файл должен представлять собой слдующее:

//---------------------------------------------------------------------------

#include

#define BUILD_APP

#pragma hdrstop

#include "p.h"

#include "Unit1.h"

#include

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//-------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//-------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{char c[10];

Message("roma");

for( ; i>0;i--)

{ sprintf(c,"Example %d",i );

Application->MessageBox("Example of using DLL variable",(char*)c,IDOK);

}

}

//-------------------------------------------------------------------------

Не забудьте об объявлениях в начале файла. Зайдите в менеджер проектов.Там откройте свой проект и добавте .lib файл из предыдушего проект с DLL( правый клик, пункт ADD). Запустите проект.

Как видите, для того, чтобы вашу DLL можно было использовать необходимо три файла: сама DLL, заголовочный файл и библиотечный файл .lib.

Динамическая загрузка

Динамическая загрузка горазда сложнее. Однако для динамической загрузки требуется только сама DLL ( не ненужен ни .lib ни заголовочный файл, хотя его можно исполбзовать для описания экспортируемых функций для предполагемого пользователя).

Давайте рассмотрим на примере, как производится динамическая загрузка. Создайте новый прокт DLL и внесите в него следующее:

extern "C" void __export Message(char *s)

{

Application->MessageBox(s,"From DLL",IDOK);

}

Cкомпилируйте проект, в результате чего будет создана DLL.

Теперь создайте проект приложения анологичный проекту для использования статической загрузки (форма с кнопкой и обработчиком события кнопки OnClick) ниже приведен код приложения:(Unit11.cpp)

//---------------------------------------------------------------------------

#include

#pragma hdrstop

#include "Unit11.h"

#include

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

void (__stdcall *Message)(char *s);

HINSTANCE dllp = LoadLibrary("p.dll");