Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive
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 – двоичный образ модуля пакета.