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


Автор: kurguru 3.5.2008, 15:41
Здравствуйте!

Ситуация следующая. Я новичок в отношении библиотеки Boost. Скачал все исходники и бОльшую часть библиотечных файлов (.lib). Прописал, что надо, в VC 8.0, попробовал пару примеров.
Но когда дело дошло до примера, в котором используется библиотека System, оказалось, что такого *.lib файла нет.
Код

LINK : fatal error LNK1104: cannot open file 'libboost_system-vc80-mt-gd-1_35.lib'

Я посмотрел, инсталлятор от BoostConsulting.com такую либу скачать не поможет. Пришлось пробовать использовать bjam.exe. Вызываю bjam, из корневой директории Boost, вот так:
Код

bjam --toolset=msvc-8.0 --with-system stage

Что-то я уже запутался... Может, это и неправильно.
Но в любом случае, что бы я ни писал, bjam выдает примерно одну и ту же ошибку:
Код

D:/_Coding/boost/tools/build/v2/build\project.jam:292: in load-jamfile
*** argument error
* rule path.parent ( path )
* called with: ( project-root.jam Jamroot )
* extra argument Jamroot
D:/_Coding/boost/tools/build/v2/util\path.jam:89:see definition of rule 'parent' being called
D:/_Coding/boost/tools/build/v2/build\project.jam:63: in load
D:/_Coding/boost/tools/build/v2/build\project.jam:167: in project.find
D:/_Coding/boost/tools/build/v2\build-system.jam:516: in load
D:\_Coding\boost\tools\build\v2/kernel\modules.jam:267: in import
D:\_Coding\boost\tools\build\v2/kernel/bootstrap.jam:132: in boost-build
D:\_Coding\boost\boost-build.jam:11: in module scope

Подскажите, как же мне всё-таки собрать эту библиотеку libboost_блаблабла_.lib ? 

Автор: Lazin 3.5.2008, 20:46
видимо bjam не знает про msvc-8.0

попробуй скачать последнюю версию bjam

Автор: kurguru 4.5.2008, 06:34
Я использовал bjam, слитый с boost-consulting.com, декабрьский (02.12.07), а вместе с библиотекой шёл более старый (28.08.07), лежит в boost\bin.
Сейчас попробовал старый - та же история. Скачал исходники bjam, собрал их - собралось всё без проблем. В итоге у меня есть ещё одна версия этого bjam. Но и с ней то же самое. та же ошибка =\
Может быть, я что-то где-то не прописал? Например, путь BOOST_ROOT - он где прописывается? Если это вообще нужно...

Автор: Alek86 4.5.2008, 13:17
помойму ты должен написать еще --build-dir - куда временные файлы будут кидаться
к примеру

Код
bjam --build-dir="D:\boost-1.35.0-libs" --toolset=msvc stage


Автор: kurguru 4.5.2008, 13:42
Я на работе сейчас, как приду домой - попробую. Но я уже и так и сяк пробовал. Вроде бы в хелпе по bjam сказано, что --build-dir - опционально, по умолчанию оно ставится куда-то в директорию boost.
Попробовал с --build-dir - то же самое. Пробовал и --toolset=msvc и --toolset=msvc-8.0 - одно и то же.

Автор: Lazin 4.5.2008, 14:48
что-то я ступил, msvc 8 поддерживается, вот msvc 2008 пока-что нет
Цитата(http://www.boost.org)

Microsoft Visual C++ 7.1 and 8 on Windows (Visual Sudio .NET 2003 and 2005). 

все должно собираться... скачай свежую версию, затем в папке ../boost_1_35_0/  скомандуй:
Код

bjam --build-dir="C:\boost\" --toolset=msvc stage


после сборки я обычно копирую все lib файлы в одну папку и прописываю путь к ней в студии (в настройках самой студии а не отдельного проекта), ну и конечно нужно удалить obj файлы
то что скачал с boost_consulting снеси.

Автор: Alek86 5.5.2008, 09:41
Цитата(Lazin @  4.5.2008,  14:48 Найти цитируемый пост)
после сборки я обычно копирую все lib файлы в одну папку

у тебя разве они сами не копируются в  BOOST_ROOT/stage/lib?
smile 

Автор: Lazin 5.5.2008, 09:54
У меня они распределены по папкам в boost_dir а я их в один каталог переношу, а что?

Автор: Alek86 5.5.2008, 09:59
ты ж пишешь
Цитата
stage

в коммандной стоке
лично у меня при этом в папку stage и копируются все либы и диелелки...

Автор: kurguru 5.5.2008, 10:06
Lazin, Alek86, 
Я заново слил и переставил boost, собрал bjam и, наконец-то, собрал все либы! Правда, не совсем те версии, что нужны, но это я уже разберусь. В чем была проблема - не знаю, но, как говорится, семь бед - один reset =)

Собирал либы так:
d:\_coding\boost> bjam --toolset=msvc-8.0 --build-dir="C:\boost" stage

Всё собралось, в C:\boost\stage\ легло несколько папок (по именам библиотек), в каждой ещё подпапки, файлы и т.д. Плюс, bjam сам скинул все полученные *.lib и *.dll файлы в папку, где установлен boost.

Как собрать нужные мне версии либ(статические, длл, дебаг, релиз и т.д.) - можно было бы спросить у вас, но лучше разберусь сам =)

Всем большое спасибо!

Автор: Alek86 5.5.2008, 10:22
кстати, при обычной сборке на msvc у меня почему-то не подставлялись префиксы lib, где они нужны были
то есть существовал файл boost_serialization-vc80-mt-1_35.lib, а при компиляции требовалась libboost_serialization-vc80-mt-1_35.lib. При полной сборке (complete) эта проблема исчезла. интересно, это только у меня такое или баг в bjam'е?

Автор: kurguru 5.5.2008, 10:57
Цитата(Alek86 @  5.5.2008,  10:22 Найти цитируемый пост)
при обычной сборке на msvc у меня почему-то не подставлялись префиксы lib, где они нужны были
то есть существовал файл boost_serialization-vc80-mt-1_35.lib, а при компиляции требовалась libboost_serialization-vc80-mt-1_35.lib.

У меня при полной сборке то же самое было. Взял, да и переименовал "пачку" библиотек "*.lib" -> "lib*.lib"

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