Hello, I am having big trouble migrating from 1.65.1 to 1.67 in VS2008 for CE platform. We already have quite a few patches for boost we reapply on every update. Boost 1.67 added more issues here and there, and among them the winapi library. On our old CE 7.00 I have winnt.h file where the second branch get selected. #if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64)) && !defined(MIDL_PASS) #define DECLSPEC_IMPORT __declspec(dllimport) #else #define DECLSPEC_IMPORT #endif Therefore, WINAPI functions are not imported but is linked via corelib.lib library. So when I compile my code I see 3>D:\Dev\boost167\boost/winapi/semaphore.hpp(48) : error C2375: 'CreateSemaphoreW' : redefinition; different linkage 3> C:\Program Files (x86)\Windows CE Tools\SDKs\DS-200i\include\ARMv4I\winbase.h(3189) : see declaration of 'CreateSemaphoreW' To make things worse in Windows Mobile 6 SDK half of API is imported and half is not (goes through corelib.lib). Visual Studio 2008 installer includes WM6 SDK. And in the file C:\Program Files (x86)\Windows Mobile 6 SDK\PocketPC\include\ARMV4I\winbase.h there are functions not prefixed with WINBASEAPI. The solution would be to have 2 new defines instead of BOOST_SYMBOL_IMPORT in boost::winapi. On CE 7 both would be empty, on WM 6 one would be __declspec(dllimport) Regards, Vyacheslav