Boost - telepítését, konfigurálását és használatát a lendületet

Kiemelés az egyik legismertebb és leggyakrabban használt programozók C ++ könyvtárak. Most már nehéz elképzelni, hogy a programozási terület (beszélek C ++), amely lendületet nem alkalmazható, vagy legalábbis annak bizonyos részeit. Tény, hogy a boost egy közös név, egyfajta banner, alatt megy egy csomó különböző könyvtárak, amely kiterjed a nagyszámú napi feladatokat. Ez azért van, mert az a tény, hogy a boost jelentősen egyszerűsíti és felgyorsítja a szoftverfejlesztés, ő szerzett annyi népszerűségre. Természetesen, erősíti és fejlesztésére használják játékokat. ugyanezen okokból: időmegtakarítás, a megbízhatóság, a kipróbált, széles körben ismert (könnyű megtalálni a megfelelő programozók), a könnyű használat.

Hol kap egy lökést

Kiemelés egy ingyenes szoftver és a forráskód letölthető a hivatalos oldalon. By the way, van, és a teljes dokumentációt minden összetevőjét.

alkatrészek kiemelés

Mint mondtam, a boost tartalmaz egy meglehetősen nagy számú könyvtárak. By the way, a nagy előnye, hogy a boost hogy cross-platform, vagyis működik a Windows és a Linux, MacOS alatt - vagyis az, hogy a többség a legelterjedtebb operációs rendszerek. És annak érdekében, hogy a port program Windows alatt például MacOS alatt, akkor nem kell, hogy érintse meg a kód, amely lendületet - csak annyi, hogy újrafordítani a programot, és minden működni fog.

A leggyakrabban használt a következő komponenseket Fokozza:

  • növeljék :: ASIO - könyvtár hálózatépítés. Egy idő után megtanultam, hogy hogyan kell használni.
  • növeljék :: kötődnek - gyakran használják a könyvtár, vannak vrapery a könnyű használat fukntorov, függvénymutatók stb
  • növeljék :: CRC - könyvtári funkciók CRC (checksum)
  • növeljék :: DateTime - funkció dátum / idő / időszakok
  • növeljék :: fájlrendszer - funkciók működnek fájlokat és a fájlrendszer
  • növeljék :: funkció - göngyölő halasztott hívások funkciók és a végrehajtására visszahívás
  • növeljék :: Interprocess - funkciókat mezhprotsessonogo interakció. Használatukkal a különböző folyamatok (programok) képes kommunikálni egymással.
  • növeljék :: Pool - alkalmassága dolgozni Pullen
  • növeljék :: ProgramOptions - funkció az egyszerű működés Opitz programot
  • növeljék :: Python - csomagolást könnyen integrálható egy python az alkalmazások vagy a rassharivaniya funkciók és könyvtárak python
  • növeljék :: Regex - könyvtár dolgozó reguláris kifejezések
  • növeljék :: szerializálás - sorszámozás és deserialization tárgyak. Használhatja például az sozhraneniya állam a játék, hogy egy fájlt, és olvasni egy fájlt.
  • növeljék :: Jelek / Signals2 - végrehajtásának jel / slot fogalom. Például a segítségével ezt a könyvtárat lehet szervezni az üzenetek cseréje (a szörnyek a játékban, például)
  • növeljék :: SmartPtr - nagyon gyakran használják könyvtár, amely végrehajtja a koncepció az intelligens mutatók. A munka nélkül egyszerűen lehetetlen)))
  • van még sok-sok egyéb alkatrészek

összeállítása kiemelés

Része a könyvtárak a boost nem igényel telepítést, és tudod használni őket csak inklyudy. De egy jelentős részét, mégis el kell kezdeni lefordítani a könyvtárban. A legegyszerűbb módszer, hogy egy lökést-jam. Letöltés itt. szüksége van egy fájl, amelynek a neve (jelenleg a legújabb verzió) boost-jam-3.1.18-1-ntx86.zip. Ez az archívum fájl bjam.exe. meg kell helyezni valamilyen mappában a rendszerben regisztrált változó% PATH%. Én általában dobja el a C: / Windows /

Van egy jobb módja: csak futni boost'a bootstrap.bat egy irattartó - ez fogja össze bjam legújabb verziót, biztonságosabb és pontosabb.

Az elérhető lehetőségek összeszerelés szükséges, írja be a következő parancsot:

Kezdete előtt az egység lökést győződjön meg arról, hogy a lemez lenne szabadon legalább 3-4 gigabájt szabad hely. Igen, ez a dolog meglehetősen nagy lendületet. Azonban ne aggódj - ha gyűjt a felhasználó programok a lendületet, akkor nem nőnek fel a gigabájt méretű - csak fokozza összegyűjti az összes könyvtár egy csomó különböző lehetőségek (összekötő), majd a szerelvény a programok, akkor csak ki igazán használta a boost funkció, és nem a teljes könyvtárat. Ha az opció összekapcsolásának akkor nem fogja használni valaha -, akkor tiltsa le őket, majd összeállítása a szerelvény kerül sor lényegesen gyorsabb, mint a lendületet. Azonban soha előre nem tudom, kell-e vagy sem, ezért jobb, ha mindent lefordítani - legyen, nem lesz felesleges.

Tehát fussunk az összeállítás:

Azt tiltva Sorka boost python, mert nem kell. Ha szükség van rá, és a Python (beleértve a forráskódot és lib) kell, hogy van a számítógépen - nem húzza ki.

Most akkor öntsünk magának egy kávét, kapcsolja be a kedvenc TV-sorozat és sokáig nézni ... összeállításának folyamata lökést nagyon (jól, sooooo) nem gyors. Könyörgöm - nem a szerelvény növeljék magad, ne próbálja megtalálni, hogy hol töltse le, hogy a hálózat - még ha megtalálja, van egy nagyon nagy a valószínűsége, hogy ez csak nem zrabotaet ...

Fordítási időben, roll egészen sok varningov - csak nem figyelni rájuk - az összeállítás még mindig szüksége van, hogy sikeres legyen.

Attól függően, hogy a hatalom a számítógép, valahol 20-60 perc, épít egy lökést felett. A boost'a mappában új mappa „szakasz / lib” - van valamennyi összegyűjtött boost könyvtárban.

Csatlakozó Boost Visual C ++

Továbbra is csak a hozzá adott mappa mappalistájában Visual Studio könyvtárak. A mappák listájának hozzá inklyudov "vasha_papka_gde_bust / boost" - vannak inklyudy lendületet, és lib hozzáadott mappa "gde_lezhit_bust / színpadi / lib". A telepítés a boost befejeződött, és készen áll a használatra. Ennek ellenőrzéséhez, akkor bármilyen például boost'a helyszínen, és próbálja lefordítani.

Ez a lecke vége. A következő lecke azt fogja mondani, hogyan kell telepíteni és beállítani a luabind, ami nagyban egyszerűsíti az életünket, hanem lehetővé teszi a könnyebb használat lua -script programjainkban.

További információk a témával kapcsolatban:

Csak vendég írta:

van egy nagyon jó lecke.
Nem tudom, hogy hol kell írni a kérdést. A legtöbb illik a téma lendületet. Megértem, hogy a megoldás a tervezés nagymértékben függ a probléma, de még mindig kíváncsi, hogyan csinálsz ebben az esetben.

Vannak karakterek a tárolóban. Fa vagy csak egy listát. És akkor azt akartuk, hogy a köztük lévő kapcsolatot. Az arány a 1-1. Hogyan lehet jobban csinálni? Jó könyvek C ++ így dicsérni okos mutatók, amelyek a hagyományos, nagyon félek használni időnként.

typedef növeljék :: weak_ptr CharacterPtr;
struct rel
std :: pár linket;
int értéket; // tulajdonosi szerkezete ahhoz, hogy tudjuk minden esetben ide csatlakoztatható nem egyszerűen egy számérték
>
/////

Igaz ez? Ez azt jelenti, statikus memória kiosztás jobb, ha nem használja? Vagy egyszerűen létrehozhat egy std :: vector és a mutatók Karakter *?

És egy hülye kérdés: shared_ptr, rámutatva, hogy a statikusan kiosztott memória - ez baj?

Csak a tervezés sok helyen kiderül, és én egy kicsit aggódom.

Csak vendég írta:

Ja, elfelejtettem, hogy a vágott tag. Nem tudom, hogyan lehetne írni, így aztán (helyett a szögletes zárójel):

typedef növeljék :: weak_ptr] Karakter [CharacterPtr;
struct rel
std :: pár] CharacterPtr, CharacterPtr [link;

„Vagy csak hozzon létre egy std :: vector] Karakter [és mutatók Karakter *?

Csak vektor Ön nem megközelítés nyilvánvalóan - azzal a kiegészítéssel, új karakter, a vektor továbbítják az adatokat az új memóriahely (áthelyezés adatok hiánya esetén a jelenlegi fenntartott memória vektor), majd az összes mutató érvénytelen lesz, ami a legjobb esetben, vezet egyszerűen hibák és valószínűleg csökken programot.

Ezért, ha azt tervezi, hogy valahol mutatók, a karakter (nem számít - okos, vagy más módon), a vektor kell tárolni (bármelyik hagyományos vagy okos).

Ugyanakkor, ha volna olyan helyzetben, amikor néhány karakter eltávolításra került, de utalhat más medálok - amit feltétlenül kell tárolni a vektoros shared_ptr'y, és linkeket ezen karakter a többi perzsák használható, például gyenge mutatók (weak_ptr).

Legalábbis első pillantásra ez a megközelítés tűnik a legésszerűbb.

Csak vendég írta:

> Amikor új karakter, a vektor átviheti az adatokat egy új blokk memória
A pokolba is, pontosan úgy, ahogy szokás a felületen. Köszönöm szépen.

A weak_ptr nem fogja elveszíteni a megosztott, amelyhez kapcsolódik, az áthelyezés? Csak azt nem tudom, a részleteket a készüléket.

Csak vendég, örült, hogy segítsen)

Ne felejtsük el azt is, hogy ha előre tudják a maximumot (összeg) karakter a tömbben, akkor egyszerűen foglaljon helyet a vector.reserve (), majd realokatsy garantált nem. Ha szeretné megtudni, hogyan lehet, hogy maximálisan kihasználja park vector.max_size (). Azonban, ha továbbra is használhatja a hagyományos mutatók - nem lesz képes átrendezni elemei a vektor (fajta, mondjuk).

Sharedpointer adatok nem vesznek el, ne aggódj, valamint a gyenge mutató látszólag nem. Bár rovására a gyenge - nincs 100% -os biztonsággal. Meg kell látni az irodalomban vagy a legegyszerűbb tesztelni egy egyszerű kód)

Kösz a cikket.
Kérdés - összeállításakor boost termelt több változatát könyvtárak, mint a boost_iostreams
libboost_iostreams-vc80-mt-1_47.lib
libboost_iostreams-vc80-mt-gd-1_47.lib
libboost_iostreams-vc80-MT-s-1_47.lib
libboost_iostreams-vc80-mt-SGD-1_47.lib
libboost_iostreams-vc80-s-1_47.lib
libboost_iostreams-vc80-SGD-1_47.lib
Melyiket használja debug többszálú? mt-gd vagy mt-SGD?

Ardan, ha jól emlékszem, valahogy így:

s - Statikus összekapcsolása
mt - multitreded
d - debug

Ennek megfelelően az a lehetőség lib, ami megfelel a beállításokat a program (ami be van állítva a Project Settings).

Helló, kérjük, segítsen az alábbi esetekben:
1) szükséges csatlakoztatni a könyvtár alátámasztó funkciót EMA
2) a kezében az archívum „boost_1_47_0”
3) Én azt kicsomagolva az asztalra, és elindította bootstrap
4) Ezután indul, és b2 megjelent bjam
5) amikor összeállítják alatt jelenlétében kupak expresszió
„#include
using namespace boost;
#include "

Semmi sem jött belőle, világossá teszi, ebben a tekintetben:
”... adni ezt a mappát a mappák listáját Visual Studio könyvtárak. A mappák listájának hozzá inklyudov "vasha_papka_gde_bust / boost" - vannak inklyudy lendületet, és lib hozzáadott mappa "gde_lezhit_bust / színpadi / lib". A telepítés a boost befejeződött, és készen áll a használatra ... "
- hogyan kell hozzáadni a lista könyvtár mappák inklyudov (ahol VS van egy hasonló gomb művelet vagy szekvencia).

Mappák színpadon, és nem létezik az archívumban

Kb. programban rejlik útvonal:
C: \ Program Files \ Microsoft Visual Studio 8 \

1. kiemelés összeállított általában hiba nélkül?
2. inklyud a fájlt, ahol a használt funkciókat, nem?
3. A mappa jelenik meg, ha a boost _uspeshno_soberotsya_ (pontosabban az összeszerelés során)
4. Ahhoz, hogy egy mappát a könyvtárak listáját Ehhez: Main Menu> Tools> Options> projektek és solutiuons> vc ++ könyvtárak. Jobb tetején a legördülő listából válassza ki a „include fájlokat” (amely arra utalna, hogy az utat Heather), vagy „library fájlok” (amely arra utalna, hogy az utat libam). Nyomja meg a gombot a kép mappát (a legördülő listából), bejegyzik a vonal jelenik meg a teljes elérési utat. Kattintson az "OK" gombot. Kész.
5. A mappák nem kell megadni a lendületet, amit kivont archívumot a mappát, amely megjelent a lemez szerelés közben (például én hoztam létre, hogy a gyökérkönyvtárban úgynevezett Boost - az, hogy ugyanabban az időben van minden lib + Heder és semmi több felesleges).

Köszönöm, de valószínűleg csak annyit kell folytatni, és újra szállít
1) boost nélkül lett lefordítva minden megáll, és figyelmeztetéseket
2) Azt rámutatni minden lehetséges módon és fájlokat valamilyen módon kapcsolódik a használata a tervezett funkció
3) hm ...
4) minden egyet létrehozni, köszönhetően sorozatprogramozásának
5) az igazság 4 pont, azt mutatták az utat a helyét a kitömörítés Busto másik isten tudja hol kitömörítette (Ön a bajt, és sehol sem találni még a neve sem boost)
6) indítsa újra a telepítést próbálta növelni, de ő azonnal hengerelt (látható látja, hogy már mindent telepítve van)

Esküszik, hogy az a tény, hogy nem tudta megtalálni egy ilyen funkció?
Ha igen, megpróbálom feltételezzük teljesen nyilvánvaló dolog: talán csak elfelejtette megadni: using namespace boost; vagy meg kell hívni egy függvény, mint boost :: EMA

Lehet, hogy ez a probléma?

egyértelműen rendelkezik egy denevér-fájlt kell használni összeállításához VisualC ++. Ha azt szeretnénk, hogy építsenek egy Bolrand Builder, a beállításait kell megváltoztatni. Azt hiszem, valahogy így kell kinéznie használati épít készítő:
bjam -toolset = borlandc
vagy, mint ez:
bjam -toolset = Borland

Ugyanakkor, ha jól emlékszem, a „friss” változat (kezdve akár 1.3.3-e valahol) nem fognak építő. Míg itt, ebben lehet, hogy tévedek, csak Builder nem használja többször, hogy kilépjen az 5. verzió (azaz 10 éve). Ez a legjobb, ebben az esetben valószínűleg arra fog törekedni, hogy növeljék a dokkok.

Én egy kezdő C ++ Linux alatt. Geany környezet fordító G ++. Itt a kód:
#include
#include
int main () int A. B. C. D;
std :: cout<<"введем две дроби"<>A >> B >> C >> D;
boost :: racionális egy (A, B), b (C, D);
std :: cout <<"a: " < std :: cout <<"a + b = " <<(a + b) <<"\n";
std :: cout<<"a * b="<<(a*b)<>
A kód működik. Tehát én csatlakozik a lendületet? Szóval élvezhetik mindazokat a funkciókat, amelyek szerepelnek a lendületet? Vagy nem? Az a tény, hogy megpróbáltam futtatni néhány példát .sayta lendületet, és nem megy. Mit tanácsol ebben az esetben? Spvsibo.

#include
#include
int main () int A. B. C. D;
std :: cout<<"введем две дроби"<>A >> B >> C >> D;
boost :: racionális egy (A, B), b (C, D);
std :: cout <<"a: " <
std :: cout <<"a + b = " <<(a + b) <<"\n";
std :: cout<<"a * b="<<(a*b)<> Nem teljesen felhívta a kódot az előző üzenet

kérem, segítsen
kyute nem látott lendületet

INCLUDEPATH + = "C: \ boost_1_55_0 \ boost"
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"

Campiglio demo.cpp például a sorszámozás könyvtár boost
undefined reference hiba

Egy kis gond:
Adunk a további könyvtárak felvételére a stúdióban nem kell „vasha_papka_gde_bust / boost”, és a gyökér, azaz ebben az esetben a „vasha_papka_gde_bust”.