From: Martin Schuerch (mschuerch_at_[hidden])
Date: 2002-12-19 18:04:23


"Peter Dimov" <pdimov_at_[hidden]> wrote in message
news:002901c2a789$02a54960$1d00a8c0_at_pdimov2...
> From: "Martin Schuerch" <mschuerch_at_[hidden]>
> > Hi
> >
> > I already posted once the following problem (solution). The problem is
> still
> > there in the code of the boost repository. I doesn't know if there are
> > reasons to not apply the patch, (e.g. global namespace polution) or if
the
> > post was missed.
> >
> > Problem:
> > In my project (some files are compiled with the /CLR flag) I get the
> > following link error under VC7.
> >
> > pplib.lib(PPFacadeNet.obj) : error LNK2022: metadata operation failed
> > (80131195) : Custom attributes are not consistent: (0x0c0008f2).
> > LINK : fatal error LNK1254: metadata for symbol
> > '?InterlockedExchange_at_winapi@detail_at_boost@@$$J18YGJPCJJ_at_Z' inconsistent
> with
> > COFF symbol table
> >
> > The problem is (after a long search), that the forward declarations of
> e.g.
> > InterlockedExchange (win32) are inside a namespace. When they are global
> it
> > works.
>
> [...]
>
> > extern "C" __declspec(dllimport) boost::detail::winapi::long_type
> __stdcall
> > InterlockedIncrement(boost::detail::winapi::long_type volatile *);
> > extern "C" __declspec(dllimport) boost::detail::winapi::long_type
> __stdcall
> > InterlockedDecrement(boost::detail::winapi::long_type volatile *);
> > extern "C" __declspec(dllimport) boost::detail::winapi::long_type
> __stdcall
> > InterlockedExchange(boost::detail::winapi::long_type volatile *,
> > boost::detail::winapi::long_type);
>
> But won't these collide with the declarations in <windows.h>?

No. I tried by including the widely used shared_ptr.hpp and windows.h (non
64 bit branch).

Why should it, as long as the types exactly match the once in windows.h?

Martin