Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost_1_34_1 + STLport-5.1.4. Как собрать ? сборка под msvc 7.1 
:(
    Опции темы
kometa_75
Дата 24.10.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Что есть:
1. IDE msvc 7.1
2. STLport-5.1.4 (собрана в многопоточном варианте).
3. boost_1_34_1

Что делаю:
В файле C:\boost_1_34_1\tools\build\v2\user-config.jam : 
1. Раскоментил: using msvc ; 
2. Раскоментил и исправил: using stlport : 5.1 : C:\STLport-5.1.4 C:\STLport-5.1.4\lib ; 
3. Запустил батник с параметрами:bjam --prefix="C:\boost" --without-python install
4. Получил откомпиленный boost.

Проблема:
1. Собираю проект с примером с оф.сайта: http://www.boost.org/libs/serialization/example/demo.cpp 
2. При линкове получаю: LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc71-mt-p-1_34_1.lib' 

Вопрос:
Как уже очевидно, такой либы у меня нет. Зато есть libboost_serialization-vc71-mt-s-1_34_1.lib. 
В чём может быть проблема ? Может где-то надо что-то изменить/добавить, или пример не удачный ?

ЗЫ. Читал в других топиках как надо конфигурировать батник для использования boost + STLport. Однако все прочитанные варианты не работают с версией boost_1_34_1.
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



2. Там правильный пример.
3. Нужно ещё добавить stdlib=stlport
4. Уверен? smile

У меня вызов сборки с stlport выглядит примерно так:
Код

bjam.exe -j1 --toolset=gcc --without-python threading=multi runtime-link=shared link=shared stdlib=stlport release debug stage -d+2 >./build.log 2>&1

-j1 - собирать в один поток(у меня outpost вылетает, когда начинают плодиться десятки процессов во время сборки smile)
--toolset=gcc - указываешь компилятор(у тебя нужно msvc)
threading=multi - многопоточный вариант
runtime-link=shared - линковка с динамической версией стандартной библиотеки(в данном случае stlport)
link=shared - собирать только динамические версии бустовых либ
stdlib=stlport - компоновать с stlport
release debug - сделать как релизные версии, так и отладочные
stage - только собрать(не устанавливать)
-d+2 - выводить сами комманды сборки(проще найти проблему)
>./build.log 2>&1 - перенаправление вывода в файл build.log


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Вобщем собрал. Однако при компиляции вышеупомянутого примера получаю ошибки линкера типа: 
error LNK2019: unresolved external symbol "public: void __thiscall boost::archive::text .... 
на некоторые функции, н-р: ::save, ::load и т.п. Судя по всему проблема в области именно текстовых потоков. Интересно, это - нормальный глюк или опять что-то не так ? 
ЗЫ. Эти ошибки вылазят как на обыкновенном билде STLport, так и на собранном с опцией /Zc:wchar_t.
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(kometa_75 @  24.10.2007,  14:50 Найти цитируемый пост)
Вобщем собрал. Однако при компиляции вышеупомянутого примера получаю ошибки линкера типа: 
error LNK2019: unresolved external symbol "public: void __thiscall boost::archive::text .... 

project->settings->linker->...->aditional dependencies->добавляешь имя бустовой либы для сериализации. Видимо auto-linkage не срабатывает из-за того, что собрано с stlport(и, соответственно, либы имеют другой тэг).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



libboost_serialization-vc71-mt-p-1_34_1.lib подключил. Не помогает...

Вот содержание одной из шести ошибок:
unresolved external symbol "public: void __thiscall boost::archive::text_oarchive_impl<class boost::archive::text_oarchive>::save(class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &)" (?save@?$text_oarchive_impl@Vtext_oarchive@archive@boost@@@archive@boost@@QAEXABV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@Z) referenced in function "public: static void __cdecl boost::archive::save_access::save_primitive<class boost::archive::text_oarchive,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > >(class boost::archive::text_oarchive &,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &)" (??$save_primitive@Vtext_oarchive@archive@boost@@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@save_access@archive@boost@@SAXAAVtext_oarchive@12@ABV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@Z)
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Либо собралось без stlport, либо нужно поиграться комментированием/расскомментированием следующих строк(в самом верху модуля)
Код

#define _STLP_DEBUG 1
#define _STLP_USE_DYNAMIC_LIB 1
//#define _STLP_USE_STATIC_LIB 1



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



В начале файла с примером включал/выключал эти строки - не помогает.
Кстати, а что в данном контексте означает 1 ? Вкл или выкл ?

Это сообщение отредактировал(а) kometa_75 - 24.10.2007, 16:08
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Означает вкл.

Добавлено через 1 минуту и 11 секунд
Цитата(kometa_75 @  24.10.2007,  15:41 Найти цитируемый пост)
libboost_serialization-vc71-mt-p-1_34_1.lib подключил. Не помогает...

А ты уверен, что подключил? Не ругается на то, что не может её найти? Library directories добавил?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Да, либа есть, компилер её видит. Ругается только на конкретные методы. Как я уже говорил, когда в коде вызывается boost::archive::text_ ... В принципе, меня интересует только бинарные архивы, только пока не могу написать тест, с boost до этого дела не имел. Может подскажешь простой тест, или ссылку кинешь ?

PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



kometa_75, тут дело не в тесте, а в том, что у тебя что-то не так собралось, или настроено.
Ругается только на отдельные методы потому что бОльшая часть буста header-only, а, соответственно можно использовать вообще без сборки.

Ок, а пути к STLport'овским хэдерам у тебя в проекте прописаны?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Да, судя по всему, ругань идёт на STLport. Всякие там basic_string и т.п.
С путями к файлам всё нормально. STLport юзаю уже давно, никогда ещё проблем с ним не имел. Блин, я уже не знаю в каких ещё настройках можно покопаться.


Это сообщение отредактировал(а) kometa_75 - 24.10.2007, 17:32
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(kometa_75 @  24.10.2007,  17:27 Найти цитируемый пост)
Судя по всему, ругань идёт на STLport. Всякие там basic_string и т.п.

 smile.
Он не может найти
someFunc(stlp_std::SomeType);
Но, к примеру, может найти
someFunc(stlp_mt_std::SomeType);

Вывод: выставить точно такие же настройки STLport с какими собирался boost.
Обратить внимание на dynamic/static, multi/single-threaded, release/debug/stldebug.
Т.к. MSVC я не пользуюсь, то советов как выставить такие же настройки я тебе дать не могу(mingw - пожалста, хоть сейчас).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



STLport я собирал по дефолту, т.е. многопоточную версию, все либы(и статические и динамические). Кстати, в батнике я писал только это: bjam --toolset=msvc --without-python stdlib=stlport install
т.к. твой пример не хотел собирать всё. В принципе сейчас попробую ещё раз твой вариант.
PM MAIL   Вверх
archimed7592
Дата 24.10.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(kometa_75 @  24.10.2007,  17:39 Найти цитируемый пост)
bjam --toolset=msvc --without-python stdlib=stlport install

Ну а буст ты собирал не многопоточный(по всей видимости)...


Цитата(kometa_75 @  24.10.2007,  17:39 Найти цитируемый пост)
т.к. твой пример не хотел собирать всё. В принципе сейчас попробую ещё раз твой вариант. 

И не должен...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
kometa_75
Дата 24.10.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 24.10.2007

Репутация: нет
Всего: нет



Цитата(archimed7592 @ 24.10.2007,  17:42)

Цитата(kometa_75 @  24.10.2007,  17:39 Найти цитируемый пост)
т.к. твой пример не хотел собирать всё. В принципе сейчас попробую ещё раз твой вариант. 

И не должен...


Хм... Он создал у меня всего ДВЕ либы. О сериализации я уже молчу. Хотя о многопточности ты верно подметил. Но, этот пример я взял с той ссылки, что ты давал. Вобщем щас собираю заново, через несколько минут всё увижу.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.