|
Boost : |
From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2004-09-30 09:38:04
Robert Ramey writes:
> Following up,
>
> I've been investigating the problem with STLPort builds of the serialization
> system. I believe that the explanation why your tests fail and mine pass
> are due to the fact that your tests build/test using the stlport dll and I
> was using the static library version.
>
> Now I'm building with the DLL libraries and I'm getting similar results to
> those you are.
>
> I believe the problem is that STLPort file _locale.h contains code like the
> following:
>
> class _STLP_CLASS_DECLSPEC locale {
> ...
> template <class _Facet>
> locale(const locale& __loc, _Facet* __f) : _M_impl(0)
> {
> ...
> }
> };
>
> Where _STLP_CLASS_DECLSPEC is defined as __declspec( dllimport ) when the
> header is used for purpose other than building the stlport dll.
>
> The templated constructor is invoked by the serialization library.
> Unfortunately, the functions for the locale class definition is already
> compiled and already in the dll. At link time the template - even inline -
> are not found.
Right.
>
> I would characterize this a conflict between the class export dll
> implementation and templated constructors - which this implemention
> requires.
>
> I'm not yet sure how to handle this now - anyone who wants can post a
> suggestion. Meanwhile, I'll keep thinking about it.
I don't think we have a lot of options here -- either we need to modify
your Jamfile to specifically request static linking when testing with
'msvc-stlport' toolset, or markup the failures as "expected" with a note
explaining the issue.
-- Aleksey Gurtovoy MetaCommunications Engineering
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk