Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-03-02 07:28:30


> Currently, if you try to compile a program that uses boost::regex (either
> boost versions 1.31 and 1.32) under the debug static runtime
> library(libboost_regex-vc71-sgd-1_32.lib), you'll get a bunch of multiply
> defined symbols something like this:
>
> LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswlower already defined in
> c_regex_traits.obj
> and so on for all of the character type macros: _iswalpha _iswupper
> _iswlower _iswdigit _iswxdigit _iswspace _iswpunct _iswalnum _iswprint
> _iswgraph _iswcntrl _iswascii
>
> This has been noticed before && stems from the fact that the inline
> directive is ignored for debug mode, causing those inline functions to
> exist
> both in the C runtime library and in the regex lib. I found a note going
> back to 2002 -
> http://lists.boost.org/MailArchives/boost-users/msg01398.php - which
> indicates that this problem is longstanding.

I've been trying to reproduce this (again), but can't at present, can you be
more specific because linking with the static VC runtime definitely works
for me. Are you defining _UNICODE when building the regex lib? If so can
you try building the lib without _UNICODE defined and linking to that
(defining _UNICODE basically has no effect as far as the regex internals are
concerned).

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk