diff --git a/boost/detail/interlocked.hpp b/boost/detail/interlocked.hpp index 75e5a30..48bb1aa 100644 --- a/boost/detail/interlocked.hpp +++ b/boost/detail/interlocked.hpp @@ -125,14 +125,18 @@ extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* ); # define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange # define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd -#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) +#elif defined( __MINGW64__ ) -#if defined(__MINGW64__) -#define BOOST_INTERLOCKED_IMPORT -#else -#define BOOST_INTERLOCKED_IMPORT __declspec(dllimport) -#endif +#include +#define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement +#define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement +#define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange +#define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange +#define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd +#define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer +#define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer +#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) namespace boost { @@ -140,15 +144,15 @@ namespace boost namespace detail { -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedIncrement( long volatile * ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedDecrement( long volatile * ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedCompareExchange( long volatile *, long, long ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchange( long volatile *, long ); -extern "C" BOOST_INTERLOCKED_IMPORT long __stdcall InterlockedExchangeAdd( long volatile *, long ); +extern "C" __declspec(dllimport) long __stdcall InterlockedIncrement( long volatile * ); +extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement( long volatile * ); +extern "C" __declspec(dllimport) long __stdcall InterlockedCompareExchange( long volatile *, long, long ); +extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long ); +extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long ); # if defined(_M_IA64) || defined(_M_AMD64) -extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* ); -extern "C" BOOST_INTERLOCKED_IMPORT void* __stdcall InterlockedExchangePointer( void* volatile *, void* ); +extern "C" __declspec(dllimport) void* __stdcall InterlockedCompareExchangePointer( void* volatile *, void*, void* ); +extern "C" __declspec(dllimport) void* __stdcall InterlockedExchangePointer( void* volatile *, void* ); # endif } // namespace detail