Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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");





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 379 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Сложнее всего начать действовать, все остальное зависит только от упорства. © Амелия Эрхарт
==> читать все изречения...

2221 - | 2091 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.