Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt + boost.regex ошибка линковки 
V
    Опции темы
CaLaT
Дата 17.6.2011, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Добрый день!

Нужда в реализации парсера поддтолкнула на приобщение к высокому... а именно boost.regex
Однако столкнулся с проблемой компановки (ошибки ниже), судя по всему компилятор не может найти нужный lib, вот только не могу понять какой и, собственно, где в pro-файле нужно его указать (путь до буста и собранных библиотек вроде указываю же).

Pro-file
Код

QT       += core
QT       -= gui
INCLUDEPATH += \
    C:/Soft/boost/boost_1_46_1 \
    C:/Soft/boost/boost_1_46_1/stage/lib
TARGET = CppHelloBoost
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp


main.cpp
Код

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

int main()
{
  std::string s = "Hello World";
  s = boost::regex_replace(s,boost::regex("World"),std::string("Boost"));
  std::cout << s << '\n';
}



(!) Тот самый список ошибок при компиляции 
Код

debug/main.o: In function `cpp_regex_traits_char_layer':
c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:366: undefined reference to `boost::re_detail::cpp_regex_traits_char_layer<char>::init()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/regex_raw_buffer.hpp:131: undefined reference to `boost::re_detail::raw_storage::resize(unsigned int)'
debug/main.o: In function `save_state_init':
c:/Soft/boost/boost_1_46_1/boost/regex/v4/perl_matcher_non_recursive.hpp:107: undefined reference to `boost::re_detail::get_mem_block()'
debug/main.o: In function `~save_state_init':
c:/Soft/boost/boost_1_46_1/boost/regex/v4/perl_matcher_non_recursive.hpp:115: undefined reference to `boost::re_detail::put_mem_block(void*)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/perl_matcher_common.hpp:292: undefined reference to `boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_parser.hpp:218: undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_parser.hpp:219: undefined reference to `boost::regex_error::raise() const'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_parser.hpp:219: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_parser.hpp:219: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:795: undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:796: undefined reference to `boost::regex_error::raise() const'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:796: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:796: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:877: undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:878: undefined reference to `boost::regex_error::raise() const'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:878: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:878: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:942: undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:943: undefined reference to `boost::regex_error::raise() const'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:943: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:943: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:1133: undefined reference to `boost::regex_error::regex_error(std::string const&, boost::regex_constants::error_type, int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:1134: undefined reference to `boost::regex_error::raise() const'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:1134: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:1134: undefined reference to `boost::regex_error::~regex_error()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:442: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:444: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/basic_regex_creator.hpp:320: undefined reference to `boost::re_detail::raw_storage::insert(unsigned int, unsigned int)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/perl_matcher_non_recursive.hpp:1117: undefined reference to `boost::re_detail::put_mem_block(void*)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/pattern_except.hpp:75: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/pending/object_cache.hpp:66: undefined reference to `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/pending/object_cache.hpp:75: undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/pending/object_cache.hpp:75: undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:625: undefined reference to `boost::re_detail::lookup_default_collate_name(std::string const&)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/perl_matcher_non_recursive.hpp:213: undefined reference to `boost::re_detail::get_mem_block()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:667: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:682: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:1051: undefined reference to `boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:1054: undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
debug/main.o:c:/Soft/boost/boost_1_46_1/boost/regex/v4/cpp_regex_traits.hpp:1054: undefined reference to `boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug/CppHelloBoost.exe] Error 1
mingw32-make.exe[1]: Leaving directory `D:/My_Docs/!Progs/!Training/Boost_Regex2'
mingw32-make.exe: *** [debug] Error 2


В аттаче qt проект с кодом.

Буду рад любым советам и предложениям!

Добавлено @ 18:58
Собственно пример проекта взят от сюда

И в pro-файле указывается интересный момент:
Цитата

win32:LIBS +=C:/Qt/2010.02.1/qt/lib/libboost_regex.lib

Судя по путям, в qt/lib попросту собран boost. У меня они лежат в дефолтном boost/boost_1_46_1/stage/lib , но у меня нет "libboost_regex.lib" и в памине
Прилинковка существующих:
(libboost_regex-vc100-mt.lib)
(libboost_regex-vc100-mt-1_46_1.lib)
(libboost_regex-vc100-mt-gd.lib)
(libboost_regex-vc100-mt-gd-1_46_1.lib)
не дала результата

Это сообщение отредактировал(а) CaLaT - 17.6.2011, 19:09

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Boost_Regex.zip 1,55 Kb
PM MAIL   Вверх
Cheloveck
Дата 17.6.2011, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

LIBS += -Lpath/to/boost/lib -lboost_regex


Добавлено через 2 минуты и 16 секунд
Да, если уже есть Qt, зачем ещё зависимости тянуть? http://doc.qt.nokia.com/latest/qregexp.html


--------------------
user posted image
PM Jabber   Вверх
borisbn
Дата 17.6.2011, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Поддержива Cheloveck'а - зачем буст, если есть QRegExp ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
CaLaT
Дата 18.6.2011, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Цитата(Cheloveck @ 17.6.2011,  20:06)
Код

LIBS += -Lpath/to/boost/lib -lboost_regex

Если я не ошибаюсь, то это решение для linux платформы
Сам виноват, что явно не указал. Но мне нужно для win32

p.s. планируется более широкое использоваие буста для написания отдельных модулей, дело одними регулярками не ограничится.

Это сообщение отредактировал(а) CaLaT - 18.6.2011, 00:15
PM MAIL   Вверх
Cheloveck
Дата 18.6.2011, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(CaLaT @  18.6.2011,  00:13 Найти цитируемый пост)
Если я не ошибаюсь, то это решение для linux платформы

Цитата

You can use the Unix -l (library) and -L (library path) flags and qmake will do the correct thing with these libraries on Windows and the Symbian platform

http://doc.qt.nokia.com/latest/qmake-varia...rence.html#libs


--------------------
user posted image
PM Jabber   Вверх
CaLaT
Дата 18.6.2011, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Собственно теперь ошибка:
Код

mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `D:/My_Docs/!Progs/!Training/Boost_Regex2'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug/CppHelloBoost.exe debug/main.o  -L'C:/Soft/boost/boost_1_46_1/stage/lib' -lboost_regex -L'c:/Soft/Qt/2010.05/qt/lib' -lQtCored4
c:/soft/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lboost_regex
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug/CppHelloBoost.exe] Error 1
mingw32-make.exe[1]: Leaving directory `D:/My_Docs/!Progs/!Training/Boost_Regex2'
mingw32-make.exe: *** [debug] Error 2


И только сейчас заметил, что в именах собранных либов у меня везде libboost_...-vc100-....lib, что мне намекнуло
Похоже, что на машине некогда стояла MSVS10 и bjam решил, что она стоит до сих пор и будет являться моим основным тулсетом... 

Попробую пересобрать буст. О результатах опишусь
PM MAIL   Вверх
Cheloveck
Дата 18.6.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



CaLaT, в -l не пишешь префикс lib и постфикс .lib, остальную часть имени библиотеки пишешь, включаея vc100


--------------------
user posted image
PM Jabber   Вверх
CaLaT
Дата 19.6.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Цитата(CaLaT @ 18.6.2011,  10:51)
Похоже, что на машине некогда стояла MSVS10 и bjam решил, что она стоит до сих пор и будет являться моим основным тулсетом... 

Попробую пересобрать буст. О результатах опишусь

Таки да. Пересобрав буст всё заработало.
Код

bjam.exe toolset=gcc --build-type=complete stage

 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




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


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

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