24.11.2014 Views

Программирование на С++ - eDrive

Программирование на С++ - eDrive

Программирование на С++ - eDrive

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

16<br />

VCL. Сохранить файлы проекта под ориги<strong>на</strong>льными име<strong>на</strong>ми, <strong>на</strong>пример<br />

myDLLLIB1.cpp, myDLLLIB1.bpr. Создать, также, файл заголовка с помощью<br />

шабло<strong>на</strong> File.New.Header File с объявлением требуемых функций, <strong>на</strong>пример:<br />

#include <br />

extern "C" void __declspec (dllexport) MyFill (double *v, int cz);<br />

extern "C" void __declspec (dllexport)<br />

MyVectorToGrid (double *v, int c, int sz, TStringGrid *sg);<br />

extern "C" void __declspec (dllexport)<br />

MyGridToVector (double *v, int c, int sz, TStringGrid *sg);<br />

Лексема __declspec со спецификатором класса памяти dllexport включается<br />

для совместимости разрабатываемой библиотеки с компиляторами Microsoft<br />

C/C++. Сохранить этот файл (<strong>на</strong>пример, myDLLLIB1.h), включить его<br />

в проект через меню Project.Add To Project и подключить к модулю библиотеки<br />

(File.Include Unit Hdr…). В файле кода модуля определить объявленные<br />

функции, <strong>на</strong>пример:<br />

void MyGridToVector (double *v, int c, int sz, TStringGrid *sg)<br />

{ for(int i=0; iCells [c][i+1]); }<br />

Скомпоновать проект (Project.Build…) и убедиться, что в папке проекта<br />

сформировались два файла: библиотека статической компоновки<br />

myDLLLIB1.lib и библиотека ди<strong>на</strong>мической компоновки myDLLLIB1.dll.<br />

2. Статическая компоновка. Создать проект с формой, отвечающей заданию<br />

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

столбец и заполнения массива. Добавить в проект файл библиотеки статической<br />

компоновки (Project.Add To Project), подключить к форме его файл<br />

заголовка и организовать вызовы необходимых функций, <strong>на</strong>пример:<br />

#include "myDLLLIB1.h"<br />

void __fastcall TForm1::Button1Click (TObject *Sender)<br />

{ int r = StrToInt (Edit1–>Text);<br />

MyFill (myVector0, r);<br />

MyFill (myVector1, r);<br />

MyVectorToGrid (myVector0, 0, r, StringGrid1);<br />

MyVectorToGrid (myVector1, 1, r, StringGrid1); }<br />

Убедиться в идентичности приложения первой работе.<br />

3. Разработка библиотеки с формой. Создать новый проект библиотеки с<br />

помощью шабло<strong>на</strong> DLLWizard и сохранить его в одной папке с только что

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

Saved successfully!

Ooh no, something went wrong!