Создание проекта статической библиотеки
· В меню Файл выберите пункт Создать, а затем пункт Проект.
· В узле Visual C++ выберите Win32 Console Application.
· Выберите имя для проекта, например TRationalLib, и введите его в поле Имя. Выберите имя для решения, например StaticLibrary, и введите его в поле Имя решения.
· Для запуска мастера приложений Win32 нажмите кнопку ОК. На странице Общие сведения диалогового окна Мастер приложений Win32 нажмите кнопку Далее(Next)
· На странице Параметры(Application Settings) приложения диалогового окна Мастер приложений Win32 в поле Тип (Application type) приложения выберите пункт Статическая библиотека(Static library).
· На странице Параметры(Application Settings) приложения диалогового окна Мастер приложений Win32 в поле Дополнительные параметры(Additional options) снимите флажок Предкомпилированный заголовок(Precompiled header).
· Чтобы создать проект, нажмите кнопку Готово(Finish).
Добавление класса TRational в статическую библиотеку Add/Class
TRational.h
#ifndef _TRational_H
#define _TRational_H
#include <string>
using namespace std;
class TRational
{
long chis,zn;
void Reduce();
int NOD(long x, long y);
public:
TRational(const long &c=0, const long &z=1);
TRational(const int &c, const int &z);
TRational(const double &r);
string toString();
TRational Add(const TRational &r);
TRational operator +(const TRational &r);
TRational operator +(const long &r);
TRational& operator +=(const TRational &r);
friend ostream& operator >>(ostream &t, const TRational &r);
};
#endif
TRational.cpp
#include "TRational.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int TRational::NOD(long x, long y){
if(y==0)return x;else return NOD(y, x%y);
}
void TRational::Reduce(){
long t;
t = NOD (chis,zn);
chis /= t;
zn /= t;
}
TRational::TRational(const long &c,const long &z):chis(c),zn(z){
if (zn==0) {cout<<"Error - divide by zero"; exit;}
Reduce();
}
TRational::TRational(const int &c, const int &z):chis(c),zn(z){
if(zn==0){cout<<"Error - divide by zero"; exit;}
Reduce();
}
TRational::TRational(const double &r){
double val1, val2;
val1 = r*10000000L; val2 =r* 1000000L;
chis = long(val1 -val2);
zn = 90000000L;
Reduce();
}
string TRational::toString(){
stringstream ss (stringstream::in | stringstream::out);
string str;
ss << chis<<'/'<<zn;
ss >> str;
return str;
}
TRational TRational::Add(const TRational &r){
TRational t =*this;
t.zn *=r.zn;
t.chis = t.chis * r.zn + r.chis * t.zn;
t.Reduce();
return t;
}
TRational TRational::operator +(const TRational &r)
{
TRational t =*this;
t.zn *=r.zn;
t.chis = t.chis * r.zn + r.chis * t.zn;
t.Reduce();
return t;
}
TRational& TRational::operator +=(const TRational &r){
chis = chis * r.zn + r.chis * zn;
zn *=r.zn;
Reduce();
return *this;
}
TRational TRational::operator +(const long &r){
TRational t(r);
t += *this;
t.Reduce();
return t;
}
Скомпилируйте статическую библиотеку, выбрав команду Построить решение (Build Solution) в меню Построение(Build).
В результате будет создана статическая библиотека, которая может использоваться другими программами(..\StaticLibrary\Debug\TRationalLib.lib).
Создание консольного приложения, ссылающегося на статическую библиотеку
· В меню Файл выберите пункт Создать, а затем пункт Проект.
· В узле Visual C++ выберите Win32 Console Application.
· Выберите имя для проекта, например CallTRationalLib, и введите его в поле Имя.
· Для запуска мастера приложений Win32 нажмите кнопку ОК. На странице Общие сведения диалогового окна Мастер приложений Win32 нажмите кнопку Далее(Next)
· На странице Параметры(Application Settings) приложения диалогового окна Мастер приложений Win32 в поле Тип (Application type) приложения выберите пункт Консольное приложение(Console application)
· На странице Параметры(Application Settings) приложения диалогового окна Мастер приложений Win32 в поле Дополнительные параметры(Additional options) выберите пункт (Empty project).
· Чтобы создать проект, нажмите кнопку Готово(Finish).
Добавьте файл программы primer.cpp(Add/New item …/C++ file)
#include <iostream>
#include "TRational.h"
using namespace std;
int main(){
TRational t(5,10),p(10,5);
cout<<t.toString()<<endl<<p.toString()<<endl;
TRational t1;
t1 = t.Add(p);
cout<<t1.toString()<<endl;
t1 = t + p;
cout<<t1.toString()<<endl;
t1 += p += t;
cout<<t1.toString()<<endl;
cout<<p.toString()<<endl;
p = p + 5;
cout<<p.toString()<<endl;
//p = 5 + p;
//cout<<p.toString()<<endl;
system("pause");
return 0;
}
Для использования класса из статической библиотеки необходимо сослаться на эту библиотеку.
Для этого в меню Проект выберите пункт Свойства проекта(Project/CallTrationalLib Properties …).
Для создания ссылки на статическую библиотеку
1. Разверните узел Linker/Input и выберите команду дополнительные ссылки(Additional Dependencies), выберите пустую строку, и нажмите кнопку с многоточием (…) в конце строки. В окне введите имя библиотеки TRationalLib.lib и нажмите ОК.
2. Разверните узел Linker/General и выберите команду дополнительные каталоги для библиотек (Additional Library Directories), выберите пустую строку, и нажмите кнопку с многоточием (…) в конце строки. В диалоговом окне Выбор каталога нажмите кнопку Выбор папки и выберите каталог, где располагается файл библиотеки TRationalLib.lib (..\StaticLibrary\Debug). В диалоговом окне Дополнительные каталоги включаемых файлов нажмите кнопку ОК чтобы сохранить выбранные значения и закрыть диалоговое окно.
Для создания ссылки на заголовочный файл
Разверните узел С/С++ /General и выберите команду Дополнительные каталоги включаемых файлов (Additional Include Directories), выберите пустую строку, и нажмите кнопку с многоточием (…) в конце строки. В диалоговом окне Выбор каталога нажмите кнопку Выбор папки и выберите каталог, где располагается файл TRational.h (..\StaticLibrary\ TRationalLib). В диалоговом окне Дополнительные каталоги включаемых файлов нажмите кнопку ОК чтобы сохранить выбранные значения и закрыть диалоговое окно.
Постройте исполняемый файл, выбрав команду Построить решение в меню Построение.
Запуск приложения