Библиотеки boost
От: Vaynamond Россия  
Дата: 06.09.19 07:43
Оценка:
День добрый!
Подскажите, плз, в какую сторону копать с такой проблемой: библиотеки boost (версия 1.6.0) собираются штатными средствами (bootstrap.bat + b2.exe) с ключом --layout=tagged (чтобы не захламлять имена библиотек версией компилятора и версией boost'а). Все пересобирается (платформа х64), на выходе имена соответствуют запрашиваемым (libboost_locale-mt-gd.lib и т.п.).
Но при сборке своего проекта на линковке лезет ошибка
fatal error LNK1104: cannot open file 'libboost_locale-vc100-mt-gd-1_60.lib'
Если переименовать libboost_locale-mt-gd.lib в libboost_locale-vc100-mt-gd-1_60.lib, появится сообщение о ненайденной libboost_iostreams-vc100-mt-gd-1_60.lib.

Где и что нужно "доработать напильником" ?
Или при использовании "коротких" имен библиотек нужно в своём проекте вручную добавлять дефайн BOOST_AUTO_LINK_TAGGED ?
Re: Библиотеки boost
От: B0FEE664  
Дата: 06.09.19 08:30
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>Но при сборке своего проекта на линковке лезет ошибка

V>fatal error LNK1104: cannot open file 'libboost_locale-vc100-mt-gd-1_60.lib'

V>Где и что нужно "доработать напильником" ?

Скорее всего "доработать напильником" надо настройки своего проекта.
V>Или при использовании "коротких" имен библиотек нужно в своём проекте вручную добавлять дефайн BOOST_AUTO_LINK_TAGGED ?
Если у вас VisualStudio, то в ней (в свойствах проекта) указываются имена библиотек для линковки.
И каждый день — без права на ошибку...
Re[2]: Библиотеки boost
От: Ops Россия  
Дата: 06.09.19 08:47
Оценка: 7 (1)
Здравствуйте, B0FEE664, Вы писали:

BFE>Если у вас VisualStudio, то в ней (в свойствах проекта) указываются имена библиотек для линковки.


Там все через через дефайны для config/auto_link.hpp делается

В нем уже #pragma comment(lib, ...

Конкретно здесь стоит попробовать BOOST_AUTO_LINK_TAGGED определить.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Отредактировано 06.09.2019 8:51 ути-пути . Предыдущая версия .
Re[3]: Библиотеки boost
От: Vaynamond Россия  
Дата: 06.09.19 08:53
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, B0FEE664, Вы писали:


BFE>>Если у вас VisualStudio, то в ней (в свойствах проекта) указываются имена библиотек для линковки.


Ops>Там все через через дефайны для config/auto_link.hpp делается


Ops>В нем уже #pragma comment(lib, ...


Ops>Конкретно здесь стоит попробовать BOOST_AUTO_LINK_TAGGED определить.

Вот как раз этот вариант и проверяю...
P.S.: Проверил, помогло.
Отредактировано 06.09.2019 9:16 Vaynamond . Предыдущая версия .
Re: Библиотеки boost
От: Ops Россия  
Дата: 06.09.19 08:56
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>Или при использовании "коротких" имен библиотек нужно в своём проекте вручную добавлять дефайн BOOST_AUTO_LINK_TAGGED ?


Нужно, конечно. Откуда еще компилятору знать, какие сгенерированы имена у библиотек?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Библиотеки boost
От: Vaynamond Россия  
Дата: 06.09.19 09:01
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Vaynamond, Вы писали:


V>>Или при использовании "коротких" имен библиотек нужно в своём проекте вручную добавлять дефайн BOOST_AUTO_LINK_TAGGED ?


Ops>Нужно, конечно. Откуда еще компилятору знать, какие сгенерированы имена у библиотек?

Компилятор, разумеется, не знает, но boost-то ведь в курсе, в каком режиме его собирали. И библиотеки свои он сам тащит в явном виде.
Re[3]: Библиотеки boost
От: Ops Россия  
Дата: 06.09.19 09:22
Оценка:
Здравствуйте, Vaynamond, Вы писали:

V>Компилятор, разумеется, не знает, но boost-то ведь в курсе, в каком режиме его собирали. И библиотеки свои он сам тащит в явном виде.


А ты уверен, что твоя ошибка после переименования не из-за какого-то заголовка, который опосредованно дергает auto_link и для другой либы?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: Библиотеки boost
От: Vaynamond Россия  
Дата: 06.09.19 10:27
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Здравствуйте, Vaynamond, Вы писали:


V>>Компилятор, разумеется, не знает, но boost-то ведь в курсе, в каком режиме его собирали. И библиотеки свои он сам тащит в явном виде.


Ops>А ты уверен, что твоя ошибка после переименования не из-за какого-то заголовка, который опосредованно дергает auto_link и для другой либы?

При сборке самих библиотек boost'а с опцией --layout=tagged и добавлением в свой проект дефайна BOOST_AUTO_LINK_TAGGED никаких ошибок не возникло. Вручную в проект библиотеки boost'а в явном виде не добавлялись.

Уточнение: в проект приходится руками добавлять библиотеку libboost_system-mt-gd.lib. Без нее лезут ошибки вида:
libboost_locale-mt-gd.lib(localization_backend.obj) : error LNK2019: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAAEBVerror_category@12@XZ) referenced in function "public: __cdecl boost::thread_exception::thread_exception(int,char const *)" (??0thread_exception@boost@@QEAA@HPEBD@Z)
и т.п.
Отредактировано 06.09.2019 11:41 Vaynamond . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.