![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Версия boost-а -- 1.43.0, собираю под виндоузом, bjam-у задаю конфигурацию minimal. Создаются библиотеки libboost_date_time-mgw44-mt-1_43.a и libboost_date_time-mgw44-mt-d-1_43.a, но при попытке собрать пример, наподобие
линкер ругается на 'undefined reference to `boost::gregorian::greg_month::as_short_string() const''. Я в исходники boost-а полез, так там вообще не нашёл реализации этой самой as_short_string(). Объявления есть, точки использования есть, а реализации -- нет. Самое обидное, что на codepad.org этот пример всё же заводится. Значит, решение есть? Кто сталкивался, подскажите, что можно сделать для исправления ситуации? |
|||
|
||||
| EgorTheBlade |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 5.12.2009 Репутация: нет Всего: -1 |
Какой у вас компилятор?
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Target: mingw32
Configured with: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --disable-sjlj-exceptions --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/src/gmp/root --with-mpfr=/mingw/src/mpfr/root --build=mingw32 Thread model: win32 gcc version 4.4.0 (GCC) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
EnergoHokum, опцию -lboost_date_time-mgw44-mt-1_43 не забыл указать?
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
При компиляции? Конечно, не забыл. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
на лине компилится: http://liveworkspace.org/code/d702d9473b3e...ca5d07f55b08e11
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Ну, там-то уже собранные библиотеки. А вот как они собранные? Может, при сборке или bjam-у, или ещё кому, нужно что-то важное сказать? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
как обычно:
проверил на венде - тоже гуд. рассказывайте как буст собирали? |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Хм... Я вот, только что, собрал в виндоузе boost 1.43.0 как у тебя написано, разве что с флагами --without-python и --without-mpi, чтобы время сборки подсократить -- всё равно происходит ошибка линковки в том примере, что я давал. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
EnergoHokum, посмотри, возможно у тебя где-то валяются "левые" библиотеки буста, которые и цепляет компилятор.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я хз как и что ты собирал...
вот ссылка на mingw на базе gcc-4.6.0, с предустановленным boost-1.43.0, которым я пользуюсь: http://rghost.ru/1749023 Это сообщение отредактировал(а) boostcoder - 29.7.2010, 12:59 |
|||
|
||||
| EnergoHokum |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Подвиндовый MinGW, входящий в Qt 4.6.3. Добавлено через 2 минуты и 4 секунды
Нестабильной веткой в работе пользуешься? Добавлено через 5 минут и 28 секунд Причём проблема эта не только у меня встречается. |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
по сравнению с остальными снепшотами, этот очень даже стабильный. всегда тещу. Добавлено через 1 минуту и 32 секунды тот пост 2007го года, и буст 1.32.0 |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Ну, значит, этот геморрой ещё с 07-го года тянется. Надо будет дома под линуксом собрать, да сравнить с подвиндовой сборкой. |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Вопрос закрыт. Виноватым, как обычно, оказался я, а не boost.
Всего-то надо было прописать -lboost_date_time после -o <exefilename>, как всё отличным образом скомпилировалось, и заработало. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Ы именно после? |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Хм... Получается, даже, что не после -o <exefilename>, а после <sourcefilename>. |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
я хотел спросить.. имеет ли в вашем случае это значение? вот я попробовал во всех комбинациях - одинаково. |
||||
|
|||||
| EnergoHokum |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
А вот нехорошо фразы из контекста выдёргивать! Аяяй тебе за это! ;-)
Да вот, отчего-то в данном случае порядок потребовался. Я чего и затупил на столь долгое время -- раньше всякие прекомпилированные библиотеки (которые с MinGW идут, например) подключал в произвольном месте, и всё собиралось. |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
тебе об этом говорили: http://forum.vingrad.ru/index.php?showtopi...t&p=2189292 |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Я следующим постом ответил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
EnergoHokum, ты случаем boost_datetime не в библиотеке используешь? просто в этом случае порядок следования подключаемых библиотек имеет значение:
например, у тебя есть библиотека libx.so, которая используется функции из библиотеки liby.so. если ты будешь собирать проект так: gcc source.c -ly -lx, то получишь ошибку. А если так: gcc source.c -lx -ly, то все соберется. Более того, если эти две библиотеки ссылаются друг на друга (их проектировщик не шибко умный), то нужно компилировать так: gcc source.c -lx -ly -lx |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Не, в простом exe-шнике, что и странно. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Не странно - порядок указания библиотек играет роль не только между библиотеками, но и между исходными (объектными) файлами. Линкер (ld) берет из библиотеки только те модули, которые содержат неопределенные в данный момент символы. И берет он их в момент обработки опции -l. Потом к этой библиотеке он не возвращается, даже если появятся новые неопределенные символы, которые в ней были.
Но у линкера есть опция, которая заставляет просматривать библиотеки повторно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |