Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230

Boost::regex работает на одном компе, а на другом - нет

04.09.2019, 05:29. Показов 3609. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <boost/regex.hpp>
 
using namespace std;
 
int main()
{
    system("clear");
 
string xStr("AAAA-12222-BBBBB-44455");
boost::regex xRegEx("(\\w+)-(\\d+)-(\\w+)-(\\d+)");
boost::smatch xResults; // сюда результаты падают ($m)
 
cout << "==========================Results============================== \n";
cout << "Does this line match our needs? " << boolalpha << boost::regex_match(xStr,  xResults, xRegEx) << "\n";
cout << "Print entire match:\n " << xResults[0] << endl;
cout << "Print the former string into another format:\n"
                                << xResults[1] << "+"
                                << xResults[2] << "+"
                                << xResults[3] << "+"
                                << xResults[4] << endl;
}
вот такой код компилирую через: g++ t.cpp -lboost_regex
на локальном ноуте всё ок, а на сервере выдаёт:
Кликните здесь для просмотра всего текста
g++ t.cpp -lboost_regex
/tmp/ccpjuvlH.o: In function `bool boost::regex_match<__gnu_cxx::__normal_i terator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal _iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)':
t.cpp:(.text._ZN5boost11regex_matchIN9__ gnu_cxx17__normal_iteratorIPKcNSt7__cxx1 112basic_stringIcSt11char_traitsIcESaIcE EEEESaINS_9sub_matchISB_EEEcNS_12regex_t raitsIcNS_16cpp_regex_traitsIcEEEEEEbT_S J_RNS_13match_resultsISJ_T0_EERKNS_11bas ic_regexIT1_T2_EENS_15regex_constants12_ match_flagsE[_ZN5boost11regex_matchIN9__gnu_cxx17__no rmal_iteratorIPKcNSt7__cxx1112basic_stri ngIcSt11char_traitsIcESaIcEEEEESaINS_9su b_matchISB_EEEcNS_12regex_traitsIcNS_16c pp_regex_traitsIcEEEEEEbT_SJ_RNS_13match _resultsISJ_T0_EERKNS_11basic_regexIT1_T 2_EENS_15regex_constants12_match_flagsE]+0x80): undefined reference to `boost::re_detail_107100::perl_matcher<_ _gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::match()'
/tmp/ccpjuvlH.o: In function `boost::re_detail_107100::perl_matcher<_ _gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iter ator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal _iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
t.cpp:(.text._ZN5boost16re_detail_107100 12perl_matcherIN9__gnu_cxx17__normal_ite ratorIPKcNSt7__cxx1112basic_stringIcSt11 char_traitsIcESaIcEEEEESaINS_9sub_matchI SC_EEENS_12regex_traitsIcNS_16cpp_regex_ traitsIcEEEEEC2ESC_SC_RNS_13match_result sISC_SF_EERKNS_11basic_regexIcSJ_EENS_15 regex_constants12_match_flagsESC_[_ZN5boost16re_detail_10710012perl_matche rIN9__gnu_cxx17__normal_iteratorIPKcNSt7 __cxx1112basic_stringIcSt11char_traitsIc ESaIcEEEEESaINS_9sub_matchISC_EEENS_12re gex_traitsIcNS_16cpp_regex_traitsIcEEEEE C5ESC_SC_RNS_13match_resultsISC_SF_EERKN S_11basic_regexIcSJ_EENS_15regex_constan ts12_match_flagsESC_]+0x124): undefined reference to `boost::re_detail_107100::perl_matcher<_ _gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cx x::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<cha r, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
collect2: error: ld returned 1 exit status

чё линкору надо?
он такое же выдаёт и на ноуте, если -lboost_regex не указать
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2019, 05:29
Ответы с готовыми решениями:

Почему на одном компьютере работает , а на другом - нет?
Почему одна и таже программа, написанная на C++ в CodeBloks на одном компьютере, не работает на другом компьютере. Я д/з по...

На одном компе видеокарта работает, а на другом - нет
В общем такая ситуация: на текущем компе перестала выдаваться картинка. Думал что видеокарта полетела, вставил новую - также не работает....

Флешка на одном компе работает, а на другом нет
Имеется флешка Transcend 8gb, после юзанья женой перестала работать, выдает &quot;не удалось получить доступ... возможно диск поврежден&quot;...

7
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
04.09.2019, 10:35
Цитата Сообщение от полудух Посмотреть сообщение
он такое же выдаёт и на ноуте, если -lboost_regex не указать
-l означает, что надо прилинковать внешнюю библиотеку. Если её не прилинковать (или если библиотеки нет), то он не сможет найти реализацию функций. Он на это и жалуется, что в вашем проекте, есть вызовы regexp'ных функций, но компилятор посмотрел во всех прилинкованных библиотеках, а такой функции не нашёл. В общем, вам надо на сервере установить libboost-regex-dev.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
04.09.2019, 18:54  [ТС]
так он же обычно выдаёт ошибку, когда не может найти либу
apt install libboost-regex-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлен пакет libboost-regex-dev самой новой версии (1.62.0.1).
libboost-regex-dev установлен вручную.
может отладчик какой пора расчехлять?
или может boost переставить (для начала)?
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
05.09.2019, 22:31  [ТС]
так куда копать то, товарищи специалисты?
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
06.09.2019, 08:55
Цитата Сообщение от полудух Посмотреть сообщение
так куда копать то,
/usr/include/boost/regex/config.hpp:#define BOOST_REGEX_DETAIL_NS BOOST_JOIN(re_detail_, BOOST_VERSION)

Несответсвие версии boost-regex.
Впрочем, если подчистить все объектные файлы, то ваш код должен собраться на обеих машинах. Только бинарник при динамической линковке будет непереносим.

Добавлено через 7 минут
Если не соберется, удалите полностью и переустановите вышеуказанный пакет.
Также возможно наличие в системе заголовочных файлов от другой версии, которые компилятор и подхватывает.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
06.09.2019, 09:23  [ТС]
Цитата Сообщение от gng Посмотреть сообщение
Если не соберется, удалите полностью и переустановите вышеуказанный пакет.
Также возможно наличие в системе заголовочных файлов от другой версии, которые компилятор и подхватывает.
вот я тоже так думал
а как это правильно делается? просто удалить /boost/ и снова скачать?
Цитата Сообщение от gng Посмотреть сообщение
Впрочем, если подчистить все объектные файлы
а это где чистить?
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
06.09.2019, 09:35
Лучший ответ Сообщение было отмечено полудух как решение

Решение

Цитата Сообщение от полудух Посмотреть сообщение
а как это правильно делается?
Bash
1
2
apt purge ...
apt install ...
Если не поможет, посмотрите, соответсвует ли установленная версия указанной в /usr/include/boost/version.hpp
Цитата Сообщение от полудух Посмотреть сообщение
а это где чистить?
Судя по вашему листингу - /tmp/ccpjuvlH.o

Добавлено через 3 минуты
Также возможно, что у вас установлена более новая версия (107100) не из пакетов, напр. в /usr/local/include.
1
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
06.09.2019, 11:14  [ТС]
Цитата Сообщение от gng Посмотреть сообщение
Судя по вашему листингу - /tmp/ccpjuvlH.o
не, там пусто, он их удаляет

заработало! снёс apt-шный boost и скачал с сайта, установил вручную
1.71 теперь и всё ок
благодарю за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2019, 11:14
Помогаю со студенческими работами здесь

ASUS RT-N10PV2: на одном компе работает на другом - нет
Роутер работал на компе, может года два. Не сказать чтобы всё было безоблачно, но как-то жили. В какой-то день перестал поступать...

От одного кабеля на одном компе интернет есть, на другом нет.
Есть локальная сеть с выходом в интернет. К локалке подключен комп. Выход в интернет есть. Когда подключаю через вторую сетевуху к компу...

Веб сайт на одном компе открывается а на другом нет! Почему?
Веб сайт на одном компе открывается а на другом нет! Почему? ссылка удалена модератором - этот сайт. На одном компе эта ссылка вообще не...

VBS-скрипт отрабатывает на одном компе, и не работает на другом
Всем доброго времени суток! Не нашла раздел по vbs поэтому пишу сюда. Модераторы, переместите пожалуйста тему, куда следует. Есть...

WinSock на одном компе работает, а на разных - нет
писал по самоучителям и по подобным примерам... на одном компьютере если запустить клиент и сервер то сообщение передаётся, а на разных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru