$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [Locale] Static locale initialisation
From: Artyom (artyomtnk_at_[hidden])
Date: 2010-04-08 16:25:05
I've notices something right now:
>
> __PURE_APPDOMAIN_GLOBAL static std::locale::_Locimp
> *global_locale = 0; //
> pointer to current locale
>
Ok, this is interesting point... Make sure that all DLLs you are using
are compiled correctly with Same MSVC runtime **DLL** (with correct import
flags) and not mixed DLL/static library/
Because if they are not, there may be more then one instance of
std::locale::_Locimp *global_locale = 0;
If it was not exported!
foo.dll -> uses dllexported std::locale::_Locimp *global_locale
bar.dll -> uses dllexported std::locale::_Locimp *global_locale
baz.dll -> do not import symbol of std::locale::_Locimp *global_locale
and uses its own version.
And you end with two static variables that are not merged... It is
very unplesant issue (which makes me love ELF and shared objects ;-) ).
When using Boost.Locale or any std::locale faces on your own
you must make sure that all DLLs and libraries same MSVC DLL. Otherwise...
wellcome to hell.
Artyom