URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9499
[ Назад ]

Исходное сообщение
"boost locale throw std::bad_cast"

Отправлено handler2006 , 29-Июн-12 11:26 
Здравствуйте!
OS - Linux debian 2.6.32-5-amd64
boost - boost_1_50_0_beta

Пример взят отсюда:


http://www.boost.org/doc/libs/1_49_0/libs/locale/doc/html/bo...

the line:
boundary::ssegment_index index(boundary::word,text.begin(),text.end());
throw exception std::bad_cast

Building boost locale  described here:


http://www.boost.org/doc/libs/1_50_0/libs/locale/doc/html/in...

Там написано:
ICU library 3.6 or above is strongly recommended

Затем я установил icu4c-49_1_2
И пытаюсь собрать  boost library:

./b2
Building the Boost C++ Libraries.


Performing configuration checks

    - iconv (libc)             : yes
    - icu                      : no
    - icu (lib64)              : no

Как же мне добавить icu support  to boost library?


Содержание

Сообщения в этом обсуждении
"boost locale throw std::bad_cast"
Отправлено handler2006 , 30-Июн-12 15:37 
Вобщем, проблема не в этом, т.к. я пересобрал буст с поддержкой icu, но это не решило проблему.

boost::locale::generator gen;
std::string text="To be or not to be, that is the question."
// Create mapping of text for token iterator using global locale.
ssegment_index map(word,text.begin(),text.end(),gen("en_US.UTF-8"));

последняя строка бросает исключение, т.к., по всей видимости, gen("en_US.UTF-8") возвращает пустой объект.
Странно, но я пробовал запустить это на машинах:

Darwin mac-os 10.4.0 Darwin Kernel Version 10.4.0 (gcc version 4.2.1)
Linux fedora 2.6.34.9-69.fc13.x86_64 (gcc version 4.8.0 )
Linux fedora 2.6.34.7-66.fc13.x86_64 (gcc version 4.4.5)
Linux debian 2.6.32-5-amd64 (gcc version 4.7.0)

Везде boost_1_50_0_beta1