Boost - инсталиране, конфигуриране и използване на тласък в

Boost е един от най-известните и най-често се използват от програмистите C ++ библиотеки. Сега е трудно да си представим, програмен район (говоря за C ++), която тласък няма да се използва, или поне части от него. В действителност, от стимула, е често срещано име, един вид банер, ще под цял куп различни библиотеки, които обхващат огромен брой ежедневни задачи. Това се дължи на факта, че тласък значително опростява и ускорява разработката на софтуер, той спечели толкова много популярност. Естествено, засили и да се използва за разработване на игри. по същите причини: спестяване на време, надеждност, проверени от времето, широко известен (лесно да се намерят подходящите програмистите), лекота на използване.

Къде да получите Boost

Boost е безплатен софтуер и неговия изходен код може да изтеглите от официалния сайт. Между другото, има и пълно документиране на всички нейни компоненти.

компоненти Boost

Както вече казах, в тласъка, тя включва доста голям брой библиотеки. Между другото, едно голямо предимство на тласъка, че е по-платформа, т.е. тя работи на Windows, както и за Linux, MacOS и под - това е, с мнозинство от най-разпространените операционни системи. И за да се пренесете програма под Windows, например, под MacOS, няма нужда да се докосне до кода, който използва тласък - просто достатъчно да компилирате програмата и всичко ще се получи.

Най-често се използва от следните компоненти Boost:

  • засили :: ASIO - библиотека мрежа. След известно време се научих да се покаже как да го използвате.
  • засили :: свързват - често се използва библиотека, има vrapery за лесно използване fukntorov, функционални указатели и т.н.
  • засили :: CRC - библиотечни функции CRC (контролна)
  • засили :: DateTime - функция с дата / час / периоди от време
  • засили :: с файловата система - функции работят с файловете и файловата система
  • засили :: Функция - опаковки за отложени разговори на функции и изпълнението на обаждане
  • засили :: Interprocess - функции за mezhprotsessonogo взаимодействие. Използването им различни процеси (програми), могат да комуникират един с друг.
  • засили :: Басейн - функционалност за работа с Pullen
  • засили :: ProgramOptions - функция за лесна работа с програмата Opitz
  • засили :: Python - опаковки за лесна интеграция на питон във вашите приложения или си rassharivaniya функции и библиотеки в питон
  • засили :: Регулярен - библиотека за работа с регулярни изрази
  • засили :: сериализирането - сериализацията и deserialization на обектите. Можете да използвате, например, за sozhraneniya състояние на играта във файл и четене от файл.
  • стимулират :: Сигнали / Signals2 - прилагане на концепцията сигнал / слот. Например, с помощта на тази библиотека може да се организира обмен на съобщения (между чудовища в играта, например)
  • засили :: SmartPtr - много често се използва библиотека, която реализира идеята за умни указатели. Работа без това е просто невъзможно)))
  • все още има много и много различни други компоненти

Съставяне Boost

Част от библиотеките от тласъка, не се нуждае от инсталация и можете да ги използвате само чрез inklyudy. Но значителна част, въпреки това, трябва да започнем да се съберат в библиотеката. Най-лесният начин е да се използва тласък-сладко. Изтеглете го тук. имате нужда от файл, който е кръстен (в момента най-новата версия) boost-jam-3.1.18-1-ntx86.zip. Този архивен файл е bjam.exe. той трябва да бъде поставен в някаква папка, която се регистрира в системата за променливо% PATH% на. Аз обикновено го хвърлят в C: / Windows /

Има и по-добър начин: просто стартирате в boost'a bootstrap.bat папка файл - той ще събере bjam най-новата версия за вас, то е по-безопасно и по-точни.

За да прегледате всички налични опции за монтаж е необходимо да въведете командата:

Преди началото на тласък на монтаж се уверете, че дискът ще бъде свободно поне 3-4 гигабайта свободно пространство. Да, това нещо е доста голям тласък. Въпреки това, не се притеснявайте - когато се съберат на програмите с помощта на тласък, те няма да растат с размер гигабайт - само засили събира всички библиотеки в куп различни опции (свързване), а след това, в събранието на вашите програми, те ще бъдат добавени само наистина се използва функцията тласък, а не на цялата библиотека. Ако някоя от опциите за свързване нямате намерение да използвате всякога - можете да ги забраните, а след съставянето на събранието ще се проведе значително по-бързо от тласък. Въпреки това, никога по-рано не знам, се нуждаят от нея, или не, затова е по-добре да се съберат всичко - нека да бъде, няма да е излишно.

Така че, нека да стартирате събрание:

Деактивирах Sorka тласък питон, защото ние не се нуждаем. Ако имате нужда от него, и Python (включително и изходния код LIBS), трябва да имате на компютъра си - не го изключвайте.

Сега можете да се налее кафе, включете любимите си телевизионни сериали и дълго време да го гледате ... Процесът на събиране на тласък много (добре, Sooooo) не е бърз. Моля ви - направете събрание даде тласък себе си, не се опитвайте да се намери къде да го изтеглите на мрежа - дори и ако можете да намерите, има много висока степен на вероятност, че това е просто не zrabotaet ...

По време на компилация, може да се търкаля в доста varningov - просто не им обръщаме внимание - събранието все още трябва да бъдат успешни.

В зависимост от силата на вашия компютър, някъде в 20-60 минути, изграждане тласък свърши. В boost'a папка нова папка се появява "Сцена / LIBS" - там са всички събрани тласък библиотека.

Свързване към стимулират Visual C ++

Остава само да добавя, че папка в списъка с папки Visual Studio Библиотеките са. В списъка с папки, добавете inklyudov "vasha_papka_gde_bust / тласък" - има inklyudy тласък и LIBS добавени папка "gde_lezhit_bust / етап / ИЪ". Монтирането на усилването е завършен и е готов за употреба. За да проверите това, можете да вземете всеки пример от boost'a сайт и се опитват да я компилирате.

Този урок е приключила. В следващия урок ще ви кажа как да инсталирате и настроите по luabind, което значително опростяване на живота ни, а по-скоро ще ви позволи по-лесно използване Луа -script в нашите програми.

Още по темата:

Просто гост написа:

имате много добър урок.
Аз не знам къде да пиша на въпроса. Повечето отговарят на тема тласък. Аз разбирам, че решенията в дизайна са силно зависими от проблема, но все още се чудех как точно се прави в този случай.

Има някои символи в хранилището. Дърво или просто списък. И след това, което искахме да направим връзката между тях. Съотношението на 12:59. Как по-добре да се направи? Добрите книги за C ++, така хвалят умни указатели, че конвенционалните толкова се страхува да се използва от време на време.

typedef засили :: weak_ptr CharacterPtr;
структура отн
STD :: чифт връзка;
Int стойност; // структура на собствеността, за които можем да в никакъв случай да бъде свързан тук не просто числена стойност
>
/////

Така ли е? Това означава, че разпределението на статична памет е по-добре да не го използвам? Или пък може просто да се създаде станд :: вектор и указатели Герой *?

И един глупав въпрос: shared_ptr, който сочи към статично разпределена памет - това беда?

Просто дизайна на много места се оказва, и аз бях малко притеснен.

Просто гост написа:

О, забравих, че маркера за рязане. Аз не знам как по-добре напиши така че след това (вместо ъглови скоби):

typedef стимулира :: weak_ptr] символи [CharacterPtr;
структура отн
STD :: двойка] CharacterPtr, CharacterPtr [връзка;

"Или пък може просто да се създаде станд :: вектор] Character [и указатели Герой *?

Просто векторна Вие не ще подходи ясно - с добавянето на нови символи, векторът може да прехвърля данни на ново място на паметта (данни за преместване в случай на липса на ток запазени вектор памет), а след това на всички ваши указатели ще стане невалидна, които в най-добрия случай, ще доведе само до грешки и е вероятно да падне програма.

Ето защо, ако имате намерение да използвате някъде указатели към вашите символа (без значение - умни или по друг начин), векторът трябва да се съхраняват указатели (или конвенционални или умни).

В същото време, ако може да има ситуация, в която някои от знака е била отстранена, но това може да се отнася към други сексапил - определено трябва да се съхранява в вектор shared_ptr'y, и за връзки с тези символи на другите персите, да се използва, например, слаби указатели (weak_ptr).

Поне на пръв поглед, този подход ми се струва най-разумно.

Просто гост написа:

> При добавяне на нови символи, векторът може да прехвърли данните в нов блок на паметта
По дяволите, точно както обикновено на повърхността. Благодаря Ви много.

А weak_ptr няма да загубите споделеното, към който е прикрепен, с преместването? Аз просто не знам подробности за устройството си.

Само за гости, се радвам да помогне)

Да не забравяме също така, че ако знаете предварително максималния лимит (сума) символа в масива, можете просто да резервират място през vector.reserve () и след това realokatsy гарантирано няма. За да научите как можете да се възползват максимално резерв vector.max_size (). Въпреки това, ако все още се използват конвенционални показатели - не ще бъде в състояние да пренаредите елементите на вектора (нещо като, да речем).

Sharedpointer данни не се губят, не се притеснявай, както и слабата показалеца на пръв поглед не би трябвало. Въпреки, че за сметка на слабите - Аз нямам 100% доверие. Трябва да видим литературата, или най-лесно да се тества един прост код)

Благодаря за статията.
Въпрос - при съставянето тласък произведени няколко версии на библиотеки, като boost_iostreams
libboost_iostreams-vc80-т-1_47.lib
libboost_iostreams-vc80-м-т-GD-1_47.lib
libboost_iostreams-vc80-т-S-1_47.lib
libboost_iostreams-vc80-м-т-SGD-1_47.lib
libboost_iostreams-vc80-S-1_47.lib
libboost_iostreams-vc80-SGD-1_47.lib
Кой от тях да се използва за отстраняване на грешки многонишковите? м-т-GD или т-SGD?

Ардан, доколкото си спомням, нещо като това:

и - Статичен Свързване
м-т - multitreded
г - отстраняване на грешки

Съответно, изберете опцията в празното, което съответства на настройките на програмата (които сте задали в настройките на проекта).

Здравейте, Моля, помогнете в следните ситуации:
1) е необходимо да се свържете библиотека поддържаща функция ЕБФ
2) в ръцете на архив "boost_1_47_0"
3) съм го разопаковах на работния плот и стартира фърмуера
4) след това е пуснат и b2 се появи bjam
5) когато изготвя при наличието на капачка експресия в
"#include
използване на пространството от имена тласък;
#include "

Нищо не се получава от него, то става ясно, в тази връзка:
"... да добавите тази папка в списъка с папки Visual Studio Библиотеките са. В списъка с папки, добавете inklyudov "vasha_papka_gde_bust / тласък" - има inklyudy тласък и LIBS добавени папка "gde_lezhit_bust / етап / ИЪ". Монтирането на усилването е завършена и е готова за употреба ... "
- как да се добави към списъка на библиотека папки inklyudov (където VS има подобен бутон-операция или последователност).

Папки етап и не съществува в архива

Прибл. Програмата се състои в пътя:
C: \ Program Files \ Microsoft Visual Studio 8 \

1. Boost компилиран нормално без грешки?
2. Можете inklyud на файла където се изпълняват функциите, които използвате, да направя?
3. папка ще се появи, когато тласък _uspeshno_soberotsya_ (по-точно по време на монтажа)
4. За да добавите папка към списъка на библиотеките да направите това: Главно меню> Инструменти> Настройки> проекти и solutiuons> VC ++ директории. Точно в горната част на падащия списък изберете "включване на файлове" (който да показва пътя към Хедър) или "библиотечни файлове" (който да показва пътя към libam). Натиснете бутона с папката на изображението (под падащия списък на), се вписва в линията се появява пълния път. Натиснете бутона "ОК". Готово.
5. Папки не трябва да се уточни печалба от увеличаването, която извлича от архива в папката, която се появи на диска по време на монтажа (например, аз го е създал в главната директория, наречена увеличи - в него като в същото време са налице всички LIBS + Хедър и нищо повече излишни).

Благодаря ти, но най-вероятно всичко, което трябва да изпълни и отново достави
1) тласък е съставена без всички спирки и предупреждения
2) Посочвам всички възможни начини и файлове, които са по някакъв начин свързани с използването на предвидената функция
3) хм ...
4) всички създадете такъв, благодаря за сериализация
5) истината е 4 точка, аз посочи пътя към местоположението на декомпресира Бусто за още един Бог знае къде разкопчан (вие в зародиш, а аз няма къде да дори да намерите името, дадено нищо тласък)
6) рестартиране на инсталацията се опита да даде тласък, но той веднага валцувани (наблюдавани вижда, че всичко вече е инсталиран)

Той се кълне, че е факта, че той не може да намери такава функция?
Ако е така, аз се опитвам да се предположи, абсолютно очевидно нещо: може би просто е забравил да уточни: използване на пространството от имена тласък; или е необходимо да извикате функция като тласък :: ERF

Може би това е проблемът?

са ясно установени в прилеп-файл, който трябва да се използва за съставяне на VisualC ++. Ако искате да се изгради Bolrand Builder, настройките трябва да се променят. Мисля, че по някакъв начин като този трябва да изглежда инструкция изгражда строител:
bjam -toolset = borlandc
или като този:
bjam -toolset = Borland

В същото време, доколкото си спомням, "чист" версия (като започнете или 1.3.3 дали има някъде) няма да строител. Докато тук, в тази може и да греша, просто Builder не използва повече пъти, за да излезете от пета версия (т.е. 10 години вече). Най-добре е в този случай най-вероятно ще се стреми да увеличи доковете.

Аз съм начинаещ в C ++ работа в Linux. Geany среда компилатор G ++. Това е кода:
#include
#include
Int основни () междинно съединение А. Б. В. D;
STD :: Cout<<"введем две дроби"<>А >> B >> С >> Г;
стимулира :: рационално а (А, В), б (С, D);
STD :: Cout <<"a: " < STD :: Cout <<"a + b = " <<(a + b) <<"\n";
STD :: Cout<<"a * b="<<(a*b)<>
Кодът работи. Така че аз свързан тласък? Така че да се насладите на всички функции, които са включени в тласък? Или не мога? Фактът, че аз се опитах да тичам някои примери за .sayta тласък, и не отиде. Какво ви посъветва в този случай? Spvsibo.

#include
#include
Int основни () междинно съединение А. Б. В. D;
STD :: Cout<<"введем две дроби"<>А >> B >> С >> Г;
стимулира :: рационално а (А, В), б (С, D);
STD :: Cout <<"a: " <
STD :: Cout <<"a + b = " <<(a + b) <<"\n";
STD :: Cout<<"a * b="<<(a*b)<> Не е напълно обърна кода в предишното съобщение

моля помогнете
kyute не видя тласък

INCLUDEPATH + = "C: \ boost_1_55_0 \ тласък"
LIBS + = "C: /boost_1_55_0/stage/lib/libboost_wserialization-vc90-mt-gd-1_55.lib"
LIBS + = "C: /boost_1_55_0/stage/lib/libboost_serialization-vc90-mt-1_55.lib"

Кампильо demo.cpp пример за библиотека тласък сериализация
неопределен позоваване грешка

Една малка предупреждение:
Добавено към допълнителната Включи директории в студиото не е необходимо "vasha_papka_gde_bust / тласък", и корена, т.е. в този случай, "vasha_papka_gde_bust".