diff -bur boost_1_32_0/boost/detail/lwm_win32.hpp boost_1_32_0.patched/boost/detail/lwm_win32.hpp
--- boost_1_32_0/boost/detail/lwm_win32.hpp	2004-07-26 02:31:59.000000000 +0200
+++ boost_1_32_0.patched/boost/detail/lwm_win32.hpp	2005-03-09 19:50:57.187500000 +0100
@@ -33,7 +33,7 @@
 
 #ifndef BOOST_USE_WINDOWS_H
 
-#ifdef _WIN64
+#if defined (_WIN64) && defined (__INTEL_COMPILER)
 
 // Intel 6.0 on Win64 version, posted by Tim Fenders to [boost-users]
 
@@ -50,6 +50,15 @@
 
 extern "C" __declspec(dllimport) long __stdcall InterlockedExchange(long volatile *, long);
 
+#if defined (_MSC_VER) && _MSC_VER >= 1400
+
+extern "C" long __cdecl _InterlockedExchange(long volatile*, long);
+
+#pragma intrinsic(_InterlockedExchange)
+#define InterlockedExchange _InterlockedExchange
+
+#endif
+
 #endif // _WIN64
 
 extern "C" __declspec(dllimport) void __stdcall Sleep(unsigned long);
