Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > BOOST+VS 2008


Автор: A5uKa 14.8.2009, 12:49
BOOST библиотеки для С++ . Есть-ли они в VS ? Не знаю почему-то кажется что нет ...

Тогда http://www.boost.org/ тут качаются какие-то файлы и все доки на engl :/

Кто может дать простой мануал как встроить BOOST в VS 2008 ?
(или возможно только отдельное добавление к проекту ?)

Автор: azesmcar 14.8.2009, 12:54
A5uKa

Нет, буст в стандарт не входит пока. Документация на английском, придется учить, ничего не поделаешь, даже если сможешь найти что нибудь на русском, всего там не будет, лучше научись читать техническую литературу на английском, без этого никак.

вот тут все написано
http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html

Автор: zim22 14.8.2009, 13:07
A5uKa, скачай буст. разархивируй например в корень диска D
В переменные среды Windows создай новую переменную. 
имя: BOOST
путь: D:\boost_1_39_0\

В свойствах проекта на вкладке Properties\C/C++\General\Additional Include Libraries пропиши $(BOOST)
всё. можешь использовать теперь буст.
проверить буст так можно:
Код

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " " );
}



Некоторые библиотеки, например reg_exp требуют, чтобы их собрали.
удобно это делать с помощью утилиты bjam (boost-jam-3.1.17-1-ntx86.zip)
bjam.exe разархивируй в папку с бустом.
создай файл bjam.bat c таким содержимым:
Код

bjam ^
  --build-type=complete ^
  --with-regex ^
  --toolset=msvc-9.0 ^
  stage
pause

запусти bjam.bat
bjam соберёт библиотеку regex и кинет lib файлы в папку D:\boost_1_39_0\stage\lib\
эту папку нужно будет также добавить в Переменные среды Windows
имя переменной: BOOST_LIB
значение: D:\boost_1_39_0\stage\lib\

Теперь нужно настроить проект.
1) В свойствах проекта на вкладке Properties\C/C++\General\Additional Include Libraries пропиши $(BOOST)
2) На вкладке Linker\General\Additional Library Directories пропиши $(BOOST_LIB)
проверить успешность настройки так:
Код

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;
    }
}

если сбилдится - значит работает.

Автор: A5uKa 14.8.2009, 13:32
вот  оно ! 
Спасибо. Будут вопросы - напишу.

есть у кого рассуждения по поводу как буст помогает работать с текстовыми файлами ? 
Мне бы пригодилось  smile 

Автор: GoldFinch 14.8.2009, 13:37
я обычно скачиваю буст, 
разархивирую в
  какойто\путь\boost_1_39_0
в "сервис\параметры\проекты и решения\каталоги VC++"
в список "включаемые файлы" добавляю строчку "какойто\путь\boost_1_39_0"

затем если надо библиотеки которые надо компилить,
компилю по умолчанию:
  bootstrap
  bjam
и добавляю строчку "какойто\путь\boost_1_39_0\stage\lib" в список "файлы бибилиотек"

Автор: W4FhLF 14.8.2009, 13:44
А я юзаю http://www.boostpro.com/download. Выбираю версию буста, качаю installer, выбираю компилятор, выбираю тип сборок и оно всё выкачивает smile Для ленивых короче. 

Автор: GoldFinch 14.8.2009, 15:07
W4FhLF, долго качает =\ быстрее у себя скомпилить

Автор: andrew_121 14.8.2009, 15:21
W4FhLF, О! Спасибо!

Цитата(GoldFinch @  14.8.2009,  15:07 Найти цитируемый пост)
долго качает =\ быстрее у себя скомпилить 

Так все равно же скачивать нужно.

Добавлено через 3 минуты и 45 секунд
Гы smile  а для Mingw-а нет...

Автор: GoldFinch 14.8.2009, 15:56
andrew_121, там уже скомпилированное качает, это 2.5Гб
а сорцы 57Мб

Автор: W4FhLF 14.8.2009, 16:22
Цитата(GoldFinch @  14.8.2009,  15:56 Найти цитируемый пост)
там уже скомпилированное качает, это 2.5Гб


Во-первых там можно выбирать сборки, которые тебе нужны (MT, MD release/debug).

Во-вторых качает всё в архивах, lib и dll хорошо жмутся. Короче скачивается там несколько сотен метров, плюс время на распаковку. С мегабитным каналом час уходит в общем. 

Автор: andrew_121 14.8.2009, 17:45
Цитата(W4FhLF @  14.8.2009,  16:22 Найти цитируемый пост)
Во-вторых качает всё в архивах, lib и dll хорошо жмутся. Короче скачивается там несколько сотен метров, плюс время на распаковку. С мегабитным каналом час уходит в общем. 

Это быстрей чем собирать.
Написал им чтоб сделали ветку для Мингв. Интересно что ответят smile 

Автор: A5uKa 14.8.2009, 19:39
ухты smile Спасибо W4FhLF

Автор: A5uKa 15.8.2009, 11:00
Код

fatal error C1083: Не удается открыть файл include: boost/filesystem/operations.hpp: 


Проблема...

Пытаюсь уже по разному во все переменные свой путь указать а всё равно не видит.

Если указывать полный путь - видит, но открывает этот самый operations.hpp и там внутри тоже инклуды - на них ругается (не переписывать же мне их все под полный путь).

Что не так. 
boost переменная в среде для всех пользователей конечный путь для библиотек - это точно.
Прийдётся на крайний случай перетащить всю папку буста в папку программы.

Автор: andrew_121 15.8.2009, 11:02
Цитата(zim22 @  14.8.2009,  13:07 Найти цитируемый пост)
Теперь нужно настроить проект.
1) В свойствах проекта на вкладке Properties\C/C++\General\Additional Include Libraries пропиши $(BOOST)
2) На вкладке Linker\General\Additional Library Directories пропиши $(BOOST_LIB)


Автор: zim22 15.8.2009, 11:18
Цитата(A5uKa @  15.8.2009,  11:00 Найти цитируемый пост)
Проблема...

читай доку. там написано, что boost::filesystem нужно сбилдить.
Цитата

Boost.Filesystem is implemented as a separately compiled library, so before using it you must install it in a location that can be found by your linker.

***
bjam.bat
Код

bjam ^
  --build-type=complete ^
  --with-filesystem ^
  --toolset=msvc-9.0 ^
  stage
pause

***
на будущее:
параметр   --with-filesystem ^
определяется просто. по названию папки. 
например: D:\boost_1_39_0\libs\filesystem 
или D:\boost_1_39_0\libs\regex 

Автор: A5uKa 15.8.2009, 11:38
Заработало )


Автор: A5uKa 15.8.2009, 12:45
Вру...

при попытке работать с включёнными библиотеками непонятно откуда вылазеет
Код


Ошибка    1    fatal error LNK1000: Internal error during IncrBuildImage    GodSaveMyCode


Автор: GoldFinch 15.8.2009, 12:54
A5uKa, минимальный код для воспроизведения ошибки покажи

Автор: A5uKa 15.8.2009, 12:55
#include "boost/filesystem/operations.hpp"

Но нет... она вылетает через раз.

Может вылететь может не вылететь...

Тенденция примерно такая 
#include "boost/filesystem/operations.hpp"
#include "boost/filesystem/path.hpp"
#include "boost/progress.hpp"


три библиотеки.

Включаю 1 вижу ошибку
Включаю все 3 вижу ошибку
Включаю нижние 2 не вижу
Включаю все не вижу
Выключаю 2 нижние не вижу
Включаю все вижу 

............

вот что )) каждый раз при изменение кода первый раз при компиляции вылетает эта ошибка , а второй раз и дальше всё идёт нормально >_< 

Автор: zim22 15.8.2009, 13:07
Цитата(A5uKa @  15.8.2009,  12:55 Найти цитируемый пост)
Может вылететь может не вылететь...

криво взломанная студия? smile
файрвол стоит? у меня agnitum outpost и не запускается билд, пока его не отключишь, а потом включишь снова.

Автор: A5uKa 15.8.2009, 13:46
f-secure 2010 oO
не могу найти нормальную доку по бустовуму файлстриму чтоб прочитать файл )

Автор: zim22 15.8.2009, 13:53
Цитата(A5uKa @  15.8.2009,  13:46 Найти цитируемый пост)
не могу найти нормальную доку по бустовуму файлстриму

в корне буста есть файл index.html
там вся дока

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)