I'm migrating some existing code that uses Boost.Coroutine from VS2013 to VS2015 and from Boost 1.55 to Boost 1.60. (Minor aside: coroutine<T>::push_type had an empty() method in 1.55 which has vanished in 1.60. This was mildly annoying but easily fixed by using operator! instead.) The code builds and runs fine as-is in VS2015 with Boost 1.60. However I wanted to try migrating to Boost.Coroutine2 as well, since Coroutine is deprecated. This however gives me the following errors: t:\boost\boost_1_60_0\boost\context\execution_context.ipp(209): warning C4251: 'boost::context::execution_context::ptr_': class 'boost::intrusive_ptrboost::context::detail::activation_record' needs to have dll-interface to be used by clients of class 'boost::context::execution_context' t:\boost\boost_1_60_0\boost\context\execution_context.ipp(54): note: see declaration of 'boost::intrusive_ptrboost::context::detail::activation_record' error LNK2001: unresolved external symbol "public: static class boost::intrusive_ptr<struct boost::context::detail::activation_record> boost::context::detail::activation_record::current_rec" (?current_rec@activation_record@detail@context@boost@@2V?$intrusive_ptr@Uactivation_record@detail@context@boost@@@4@A) I'm building with BOOST_ALL_DYN_LINK, in case that makes a difference. Is this a known issue? Is it fixed in a later Boost release? (FWIW, Boost.Coroutine also generates C4251 with a different symbol but does not generate LNK2001, so the application still works.)