C++ 在Windows 10通用应用程序中使用Boost

C++ 在Windows 10通用应用程序中使用Boost,c++,boost,windows-10,win-universal-app,C++,Boost,Windows 10,Win Universal App,我正在开发Windows10通用应用程序,主要针对Windows手机。尝试使用boost时,会出现如下错误: boost/asio/detail/impl/win_thread.ipp(48): error C2039: 'TerminateThread': is not a member of '`global namespace'' 据我所知,出现这个问题是因为boost使用了win32 api,而Windows 10通用应用程序不支持该api。我尝试了1.58(当前官方版本)和1.59(

我正在开发Windows10通用应用程序,主要针对Windows手机。尝试使用boost时,会出现如下错误:

boost/asio/detail/impl/win_thread.ipp(48): error C2039: 'TerminateThread': is not a member of '`global namespace''
据我所知,出现这个问题是因为boost使用了win32 api,而Windows 10通用应用程序不支持该api。我尝试了1.58(当前官方版本)和1.59(候选版本)。有我丢失的旗帜吗?您是否有任何与boost和Windows通用应用程序支持相关的信息


我已经创建了最小程序来重现此错误:

#include <boost/asio.hpp>

int main()
{
    return 0;
}

并非所有Boost库都可用于Windows通用应用程序。使更多应用程序可用于通用应用程序的工作正在进行中。以下是更多信息:

文章作者史蒂文·盖茨(Steven Gates)评论说Boost.Asio可能使用了被禁止的API。我无法链接到个人评论,因此在此部分引用(我的重点):

史蒂文·盖茨 @李宁82:Boost.ASIO依赖于WinSock API,而WinSock API最近才被允许在Windows Phone 8上使用。但是我敢打赌,ASIO正在使用其他被禁止的API,您必须替换这些API

此外,CreateThread、CreateThreadPool等在Windows通用应用程序中不可用

如上所述,我将假设您必须使用Boost.Asio以外的其他工具,这里有一些其他信息可能会有所帮助:

模拟多线程的推荐方法是使用。您也可以使用

为了完成这项工作,这里有一份清单。和


希望这有帮助。

将其报告为bug,如果不需要asio,则将其从构建中排除。
FlsAlloc
允许用于应用商店应用,但
TerminateThread
不允许;它是。您是否需要任何特殊标志来构建具有商店兼容性的Boost?(抱歉,我不知道Boost)。Marcin正在询问C++,但是,你建议使用<代码>任务。运行< /COD>和 TaskPrime.StcDebug < /Cord>。C++中没有。@ YujChan--这不完全正确。当使用C++创建UWP时,您必须使用C++扩展名,允许您访问.NET库。请参见C++中Task.Run页面上的示例:
c:\program files (x86)\windows kits\10\include\10.0.10240.0\um\processthreadsapi.h(491): error C3861: 'FlsAlloc': identifier not found