Boost logo

Boost Users :

Subject: Re: [Boost-users] error C2733 second C linkage of overloaded function InterlockedIncrement not allowed
From: menuthaur (menuthaur_at_[hidden])
Date: 2008-09-23 02:56:24


Hello,

I was a little irritated about your response. So i had checked the file interlocked.hpp again.
AND SORRY, i have given you the wrong line numbers.

I mean line 38 to line 42:

---------------------------------------------------------------------
#elif defined(_WIN32_WCE)

// under Windows CE we still have old-style Interlocked* functions

=> extern "C" long __cdecl InterlockedIncrement( long* );
=> extern "C" long __cdecl InterlockedDecrement( long* );
=> extern "C" long __cdecl InterlockedCompareExchange( long*, long, long );
=> extern "C" long __cdecl InterlockedExchange( long*, long );
=> extern "C" long __cdecl InterlockedExchangeAdd( long*, long );

# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
----------------------------------------------------------------------

These lines are making trouble at building the application.

Regards,

Marcus Gehr.

-------- Original-Nachricht --------
> Datum: Mon, 22 Sep 2008 18:06:02 +0300
> Von: "Peter Dimov" <pdimov_at_[hidden]>
> An: boost-users_at_[hidden]
> Betreff: Re: [Boost-users] error C2733 second C linkage of overloaded function InterlockedIncrement not allowed

> Marcus Gehr:
>
> > Hello,
> >
> > Sorry i forgot.
> > I'm using boost verison 1.36
>
> You mentioned lines 55-63, these are (in 1.36):
>
> #elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
>
> extern "C" long __cdecl _InterlockedIncrement( long volatile * );
> extern "C" long __cdecl _InterlockedDecrement( long volatile * );
> extern "C" long __cdecl _InterlockedCompareExchange( long volatile *,
> long,
> long );
> extern "C" long __cdecl _InterlockedExchange( long volatile *, long);
> extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long);
>
> But there is a CE-specific section before that:
>
> #elif defined(_WIN32_WCE)
>
> // under Windows CE we still have old-style Interlocked* functions
>
> extern "C" long __cdecl InterlockedIncrement( long* );
> extern "C" long __cdecl InterlockedDecrement( long* );
> extern "C" long __cdecl InterlockedCompareExchange( long*, long, long );
> extern "C" long __cdecl InterlockedExchange( long*, long );
> extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
>
> Why does it not get selected in your configuration? Is _WIN32_WCE defined?
> It should be set to 600 for CE 6.0 (in principle). (Or is it 0x600?)
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net