0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 3
1

Как создать свою библиотеку?

09.02.2011, 11:59. Показов 11348. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Много времени потратила на поиски какой-нибудь информации о том, как создать статическую библиотеку(не динамическую). Кто-нибудь может объяснить как это делается? это просто модуль свой создать и все что ли или как?

Просто само задание то очень легкое, там площади фигур посчитать, а вот про библиотеки не чего не могу понять(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.02.2011, 11:59
Ответы с готовыми решениями:

Как создать библиотеку с отображением альбома песни?
Здравствуйте!, как сделать библиотеку, чтобы при добавлений треков в саму библиотеку, отображались...

Как создать dll-библиотеку, чтобы другие могли ее использовать?
Здраствуйте. Допустим, у меня есть код програмы. Как создать dll библиотеку со всеми функциями и...

Как создать библиотеку с иконками?
Тут у меня дилетанский вопрос, как создать библиотечку с иконками, для дальнейшего использования...

Как создать свою игру наподобие "Мышь в лабиринте"?
День Добрый! Хотелось бы создать игру с помощью делфи. Вот примерно таких жанров =>...

5
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
09.02.2011, 13:41 2
Библиотеку (DLL) к проекту можно подключить с помощью статического или динамического связывания. По заданию требуется статическое связывание. Делается так:
Проект DLL:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
library CalcLib;
 
{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }
 
uses
  SysUtils;
 
{$R *.res}
 
//Площадь прямоугольника.
function RectArea(const aLen, aWidth : Extended) : Extended; stdcall;
begin
  Result := aLen * aWidth;
end;
 
//Площадь круга.
function CircleArea(const aR : Extended) : Extended; stdcall;
begin
  Result := Pi * aR * aR;
end;
 
exports RectArea, CircleArea;
 
begin
end.
Проект вызывающей программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
//Площадь прямоугольника.
function RectArea(const aLen, aWidth : Extended) : Extended; stdcall;
  external 'CalcLib.dll' name 'RectArea';
 
//Площадь круга.
function CircleArea(const aR : Extended) : Extended; stdcall;
  external 'CalcLib.dll' name 'CircleArea';
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  L, W, R, A : Extended;
begin
  Memo1.Clear;
  Memo1.Lines.Add('Площади фигур:');
 
  //Прямоугольник.
  //Длина.
  L := StrToFloat(Edit1.Text);
  //Ширина.
  W := StrToFloat(Edit2.Text);
  //Площадь.
  A := RectArea(L, W);
  Memo1.Lines.Add('Площадь прямоугольника = ' + FloatToStr(A));
 
  //Круг.
  //Радиус.
  R := StrToFloat(Edit3.Text);
  //Площадь.
  A := CircleArea(R);
  Memo1.Lines.Add('Площадь круга = ' + FloatToStr(A));
end;
 
end.
---
В списке тем в разделе важное имеется тема: Основы Dll для начинающих от STRATEG.
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 3
09.02.2011, 13:48  [ТС] 3
Спасибо за пример. а вот еще вопрос, а как и где создавать эту библиотеку?
это обычный модуль или что?не понимаю
0
хацкер
172 / 157 / 34
Регистрация: 19.01.2011
Сообщений: 425
09.02.2011, 13:52 4
меню: fille - new - dll wizard
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 3
09.02.2011, 14:09  [ТС] 5
я совсем запуталась( Я думала так динамическая библиотека создается, а что статическая -модуль. Т.е. по созданию они не чем не отличаются?
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
09.02.2011, 15:43 6
Цитата Сообщение от Илона18 Посмотреть сообщение
я совсем запуталась( Я думала так динамическая библиотека создается, а что статическая -модуль. Т.е. по созданию они не чем не отличаются?
Скорее всего в задании имеется в виду не статическая библиотека (нет общей договорённости что это такое), а обыкновенная DLL библиотека, которая должна быть подключена через статическое связывание. Пример со статическим связыванием - в моём предыдущем посте.
0
09.02.2011, 15:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2011, 15:43
Помогаю со студенческими работами здесь

Как создать свою библиотеку
Есть несколько понятий в которых путаюсь. библиотека - какой-то файл заголовочный файл - файл с...

Как создать свою библиотеку?
Как создать свою библиотеку со своими функциями и включить ее в основную программу?

Как создать свою граф.библиотеку?
А как создать свою графическую библиотеку? С чего начать?

WinAvr +AVRStudio как создать свою библиотеку?
Вопрос 1. Как создать свою простенькую библотеку с функциями? (те что через #ymstude <*.h>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru