On Fri, Jun 26, 2009 at 5:47 PM,
On the 64-bit builds (where the problem DOES occur) I am using _WIN32_WINNT=0x0600 directly in the .vcproj files. That's on a WindowsServer2008 SP1, VS2008 setup. Either "windows.h" or "WinNT.h" says 0x0600 is "Longhorn", and it appears that WindowsServer2008 qualifies, based on what I thought I saw when I intentionally omitted _WIN32_WINNT and let the compiler pick the value. Maybe I'm wrong; I'll try to verify what happens if I don't specify anything for _WIN32_WINNT.
anything greater than or equal to 0x0500 is fine, but the asio header file is actually checking WINVER, not _WIN32_WINNT. WINVER is really just the 'legacy' version of _WIN32_WINNT but conceptually they are used for the same purpose. so i'm not sure why the header checks WINVER instead of _WIN32_WINNT, although there may be a good reason. Anyway, long story short, leave the _WIN32_WINNT=0x0600 in, but additionally add WINVER=0x0600 and try that. The reason this doesn't occur on 32 bit is because ULONG_PTR is a different type on 32 and 64-bits.