【发布时间】:2017-08-23 19:21:55
【问题描述】:
我有一个使用 Boost 库的应用程序。在桌面上,Windows UAP 应用程序按预期工作,但在手机(真手机或模拟器)上,应用程序在启动时崩溃,无法调试。
问题似乎来自 boost::thread 库。
以下是重现此问题的简单步骤:
- 从命令行构建 boost 线程和 date_time(似乎需要链接 date_time):
b2 --with-thread --with-date_time toolset=msvc-14.0 variant=debug link=static architecture=x86 windows-api=store cxxflags="/AIC:/winrt"。请注意,“C:/winrt”是与 platform.winmd 所在的“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\store\references”的连接点(因为它似乎需要构建)李> - 使用 Visual Studio 2015 创建一个空白 C++ Windows 10 通用应用。
- 编辑 Mainpage.xaml.cpp 并添加对 boost::thread 的调用,例如:
boost::thread workerThread(workerFunc);其中“workerFunc”是您想要的任何函数。添加所需的包含文件 (#include <boost/thread/thread.hpp>)。在链接选项中,添加 boost 线程库。 - 现在在手机模拟器中运行应用程序。
- 结果:应用程序将在加载时崩溃。
这也发生在带有 arm CPU 的真实手机上(使用选项 architecture=arm 构建的 boost)。使用为模拟器构建的相同应用程序无法在台式计算机上重现此问题。只需在您的语言环境机器上运行该应用程序即可。
我错过了什么吗?
【问题讨论】:
标签: multithreading boost windows-runtime windows-phone win-universal-app