C ++ boost вылетает при использовании локали

Я пытаюсь использовать библиотеку Boost для обеспечения поддержки i18 для моего класса строки. Я использую компилятор Microsoft Visual Studio VC10 и 64-битную машину Windows 7.

Я могу скомпилировать и связать свое приложение с библиотекой Boost, однако мое приложение падает при вызове boost :: locale :: to_upper ().

Ниже приведен код, который я написал.

#include <boost/locale.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/system/config.hpp>



 String::MakeUpper()()
    {
    boost::locale::generator gen;
    std::locale loc = gen("");
    std::locale::global(loc);
    std::string str2 = boost::locale::to_upper("001Öä", loc); // application crashes here.
    std::string str3 = boost::locale::to_upper("001Öä"); // This also does not work
    }

Сбой происходит в следующей функции. эта функция выдает исключение плохого приведения.

template<class _Facet> inline
const _Facet& __CRTDECL use_facet(const locale& _Loc)

{   // get facet reference from locale
_BEGIN_LOCK(_LOCK_LOCALE)   // the thread lock, make get atomic
    const locale::facet *_Psave =
        _Facetptr<_Facet>::_Psave;  // static pointer to lazy facet

    size_t _Id = _Facet::id;
    const locale::facet *_Pf = _Loc._Getfacet(_Id);

    if (_Pf != 0)
        ;   // got facet from locale
    else if (_Psave != 0)
        _Pf = _Psave;   // lazy facet already allocated
    else if (_Facet::_Getcat(&_Psave, &_Loc) == (size_t)(-1))

#if _HAS_EXCEPTIONS

        _THROW_NCEE(bad_cast, _EMPTY_ARGUMENT); // lazy disallowed

....
....
....

}

Не могли бы вы помочь мне.

С уважением, Сумит

Ответы на вопрос(1)

Ваш ответ на вопрос