Mar*_*inG 10 c++ boost win-universal-app windows-10
我正在开发Windows 10通用应用程序,主要针对Windows手机.当尝试使用boost时,我得到这样的错误:
boost/asio/detail/impl/win_thread.ipp(48): error C2039: 'TerminateThread': is not a member of '`global namespace''
Run Code Online (Sandbox Code Playgroud)
据我所知,这个问题是由于使用win32 api的提升而发生的,Windows 10通用应用程序不支持.我尝试了1.58(当前官方发布)和1.59(发布候选版).有没有我失踪的旗帜?您是否有任何与boost和Windows通用应用程序支持相关的信息?
我创建了最小程序来重现这个错误:
#include <boost/asio.hpp>
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
事实上,我得到的第一个错误是:
c:\program files (x86)\windows kits\10\include\10.0.10240.0\um\processthreadsapi.h(491): error C3861: 'FlsAlloc': identifier not found
Run Code Online (Sandbox Code Playgroud)
并非所有 Boost 库都可用于 Windows 通用应用程序。使更多的应用程序能够与通用应用程序一起使用的工作正在进行中。以下是更多信息:https://blogs.msdn.microsoft.com/vcblog/2014/07/18/using-boost-libraries-in-windows-store-and-phone-applications/
帖子作者 Steven Gates 的评论表明 Boost.Asio 可能使用被禁止的 API。我无法链接到个人评论,因此在这里部分引用(强调我的):
Steven Gates @Li Ning 82:Boost.ASIO 依赖于 WinSock API,最近 Windows Phone 8 才允许使用该 API。不过我敢打赌ASIO 正在使用其他被禁止的 API,您必须替换它们。
此外,CreateThread、CreateThreadPool 等在 Windows 通用应用程序中不可用。
如上所述,我假设您必须使用 Boost.Asio 以外的其他东西,其中有一些可能有帮助的附加信息:
模拟多线程的推荐方法是使用Task.Run。您还可以使用TaskFactory.StartNew。
为了完整起见,下面是Windows 运行时应用程序的 Win32 和 COM API的列表。以及Windows 运行时应用程序中 Windows API 的替代方案。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
1857 次 |
| 最近记录: |