
Hi I have sent a mail about this topic to boost-users a few weeks ago but got no response. There exist a few problems when trying to compile Boost 1.32.0 under AMD64 with VS.NET 2005: * No toolset exists to compile Boost 1.32.0 native on the AMD64 platform (no cross compile). The attached file vc-8_0-amd64-tools.jam fixes that. * InterlockedExchange() in line 44 of lwm_win32.hpp collides with a macro of the same name in WinBase.h One finds in WinBase.h: #elif defined(_M_AMD64) && !defined(RC_INVOKED) ... #define InterlockedExchange _InterlockedExchange I changed the name of Boost's function to InterlockedExchangeBoost() to avoid this problem. * No type long_type exists when compiling with the Microsoft Compiler. The 64Bit part in lwm_win32.hpp seems to have been written for the Intel Compiler. An additional #ifdef now checks if the 64Bit compiler is from Intel or Microsoft. The InterlockedExchange() and long_type issues are fixed by boost_1_32_0-AMD64.patch. Maybe these changes can be integrated in some form in the next version of Boost. Best regards, Peter.

p.klotz@icoserve.com wrote:
Hi
I have sent a mail about this topic to boost-users a few weeks ago but got no response.
There exist a few problems when trying to compile Boost 1.32.0 under AMD64 with VS.NET 2005:
* No toolset exists to compile Boost 1.32.0 native on the AMD64 platform (no cross compile). The attached file vc-8_0-amd64-tools.jam fixes that.
* InterlockedExchange() in line 44 of lwm_win32.hpp collides with a macro of the same name in WinBase.h
I think that VS 2005 has a proper header for the intrinsics now, but I don't have access to it at the moment so I can't check. Can you please rewrite your patch taking this into account? BTW there should be no need to introduce InterlockedExchangeBoost, just use _InterlockedExchange in the _WIN64 branch.

There exist a few problems when trying to compile Boost 1.32.0 under AMD64 with VS.NET 2005:
* No toolset exists to compile Boost 1.32.0 native on the AMD64 platform (no cross compile). The attached file vc-8_0-amd64-tools.jam fixes that.
I think that VS 2005 has a proper header for the intrinsics now, but I don't have access to it at the moment so I can't check. Can you please rewrite
your patch taking this into account?
BTW there should be no need to introduce InterlockedExchangeBoost, just use _InterlockedExchange in the _WIN64 branch.
The attached patch no longer defines InterlockedExchangeBoost(). Compiler intrinsics are now used for InterlockedExchange when compiling with VC8 or higher under x86 and AMD64. The patch works for VC71/x86 (where nothing has changed), VC8/x86 and VC8/AMD64. Could you please check in the toolset for VC8/AMD64? Best regards, Peter.
participants (2)
-
p.klotz@icoserve.com
-
Peter Dimov