From: David Abrahams (dave_at_[hidden])
Date: 2005-10-28 11:54:44
"Dan McLeran" <dan.mcleran_at_[hidden]> writes:
> Yesterday, I tried upgrading from Boost 1.30 to 1.33 and I got the weirdest
> reaction from my linker. Some background: I am using MSVC6SP6; The code in
> question is a dll that runs under PharLap 9.1. I am linking against libcmt
> as well as a lib called cellexe.lib, which provides all of the C runtime
> stuff and PharLap-specific OS stuff. With Boost 1.30, everything compiles
> and links just peachy. When I pointed the project at Boost 1.33, I had to
> make a couple of small code changes:
> 1. I had to change boost::mpl::apply_if to boost::mpl::eval_if.
> 2. I had to stop using TrivialIteratorConcept and switched to
> ForwardIteratorConcept or RandomAccessIteratorConcept.
> That's really the only code changes I can think of but now my linker gives
> me a bunch of warnings and 1 error message, which is what's really killing
> LIBCMT.lib(typinfo.obj) : error LNK2005: "const type_info::`vftable'"
> (??_7type_info@@6B@) already defined in cellexe.lib(Cellexe.exe)
> LIBCMT.lib(strtol.obj) : error LNK2005: _strtoul already defined in
> LIBCMT.lib(chkstk.obj) : error LNK2005: __chkstk already defined in
> LIBCMT.lib(xtoa.obj) : error LNK2005: __ultoa already defined in
> LIBCMT.lib(atox.obj) : error LNK2005: _atoi already defined in
Looks like a build configuration problem. You seem to have a copy
of your compiler's runtime lib linked into LIBCMT.lib and also into
the DLL you were building.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk