13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

77<br />

//myApplication.cpp<br />

#include "myDLL.h"<br />

void __fastcall TForm1::Button1Click (TObject *Sender) { Message ("Привет "); }<br />

void __fastcall TForm1::Button2Click (TObject *Sender) { About ("Привет "); }<br />

Ди<strong>на</strong>мическое подключение выполняется и<strong>на</strong>че:<br />

void _ _fastcall TForm1::Button1Click (TObject *Sender) {<br />

HINSTANCE dllp = LoadLibrary ("myDLL.dll");<br />

if (dllp) {<br />

void (_ _stdcall *p) (char *s);<br />

p = (void (_ _stdcall *) (char*)) GetProcAddress (dllp,"_Message");<br />

if (p) p ("Привет ");<br />

else ShowMessage ("Нет функции DLL");<br />

FreeLibrary (dllp);<br />

}<br />

else ShowMessage ("Нет файла DLL");<br />

}<br />

Функция LoadLibrary возвращает тип HINSTANCE из библиотеки Windows<br />

API и загружает модуль DLL, либо NULL при его отсутствии. Функция<br />

GetProcAddress присваивает з<strong>на</strong>чение указателя функции DLL. Затем вызывается<br />

рабочая функция, а библиотека DLL выгружается из памяти функцией<br />

FreeLibrary.<br />

А<strong>на</strong>логичным образом экспортируются целые классы DLL.<br />

Пакеты BPL создаются <strong>на</strong> базе шабло<strong>на</strong> Package. При проектировании<br />

пакета используются файлы со следующими расширениями:<br />

.BPK – исходный файл параметров проекта в формате XML;<br />

.BPL – runtime-пакет, представляющий разновидность .DLL со специальными<br />

функциями C++Builder;<br />

.BPI – библиотека импорта пакета;<br />

.CPP – файл исходного текста с главной функцией проекта DllEntry-<br />

Point;<br />

.H – файл заголовка;<br />

.LIB – статическая библиотека (коллекция файлов OBJ) для подключения<br />

в режиме design time, если установлен параметр компиляции GI (Generate<br />

LIB file);<br />

.OBJ – двоичный образ модуля пакета.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!