Программирование на С++ - eDrive
Программирование на С++ - eDrive
Программирование на С++ - eDrive
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
17<br />
подготовленным приложением, <strong>на</strong>пример, как myDLLLIB2.cpp,<br />
myDLLLIB2.bpr. Создать, далее, файл заголовка с объявлением требуемой<br />
функции, <strong>на</strong>пример:<br />
extern "C" void __declspec (dllexport) MyAbout (char *s);<br />
Сохранить этот файл (<strong>на</strong>пример, myDLLLIB2.h), включить его в проект и<br />
подключить к модулю библиотеки. Подготовить, также, форму «О программе»<br />
(File.New.Form) с рисунком-логотипом и тремя <strong>на</strong>дписями. Две<br />
<strong>на</strong>дписи оставить пустыми для <strong>на</strong>звания работы и даты, а третью заполнить<br />
сведениями об авторе. Сохранить форму (<strong>на</strong>пример, под именем<br />
myDLLForm.cpp), включить ее в проект и подключить к модулю библиотеки.<br />
В файле кода модуля определить объявленную функцию, <strong>на</strong>пример:<br />
void MyAbout (char *s)<br />
{ Form1 = new TForm1 (0);<br />
Form1–>Label1–>Caption = s;<br />
Form1–>Label2–>Caption = DateToStr (Date ());<br />
Form1–>ShowModal ();<br />
delete Form1; }<br />
Скомпоновать проект и убедиться, что в папке проекта сформировались<br />
файлы библиотеки LIB и DLL.<br />
4. Ди<strong>на</strong>мическая компоновка. В форму подготовленного приложения добавить<br />
кнопку «О программе» и кодировать ее обработчик:<br />
void __fastcall TForm1::Button3Click (TObject *Sender)<br />
{ HINSTANCE dllp = LoadLibrary (“myDLLLIB2.dll”);<br />
if (dllp)<br />
{ void (__stdcall *p) (char *s);<br />
p = (void (__stdcall *) (char *)) GetProcAddress (dllp, “_MyAbout”);<br />
if (p) p (“Библиотеки LIB и DLL”);<br />
else ShowMessage (“Нет функции MyAbout”);<br />
FreeLibrary (dllp); }<br />
else ShowMessage (“Нет файла myDLLLIB2.dll”); }<br />
Здесь функция LoadLibrary возвращает указатель <strong>на</strong> переменную типа HInstance<br />
из библиотеки Windows API и загружает файл DLL. Функция Get-<br />
ProcAddress присваивает з<strong>на</strong>чение указателя функции DLL. Затем вызывается<br />
рабочая функция и библиотека выгружается из памяти функцией<br />
FreeLibrary. В заключение испытать приложение c библиотеками.