我有一个使用Boost库的应用程序。在桌面上,Windows UAP应用程序按预期工作,但是,在手机(真实手机或模拟器)上,应用程序在启动时崩溃,并且无法进行调试。
似乎问题来自boost :: thread库。
以下是重现此问题的简单步骤:
b2 --with-thread --with-date_time toolset=msvc-14.0 variant=debug link=static architecture=x86 windows-api=store cxxflags="/AIC:/winrt"
。请注意" C:/ winrt"是" C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ lib \ store \ references"其中platform.winmd(因为它似乎需要构建)boost::thread workerThread(workerFunc);
其中&#34; workerFunc&#34;是你想要的任何功能。添加所需的包含文件(#include <boost/thread/thread.hpp>
)。在link选项中,添加boost thread lib。这种情况发生在带有手臂CPU的真实手机上(使用选项architecture=arm
构建了boost)。使用为仿真器构建的相同应用程序无法在桌面计算机上重现此问题。只需在您的语言环境机器上运行该应用程序即可。
我错过了什么吗?
答案 0 :(得分:1)
问题似乎是Windows UAP项目默认链接到库中,这些库在手机中不可用,例如ole32.lib。因此它在桌面上编译和工作,但在手机上崩溃,并且没有关于哪个DLL创建问题的信息。此外,microsoft的app验证软件不提供任何有关该软件的信息。
答案 1 :(得分:0)
我也遇到了类似的问题,应用程序在桌面上工作正常但无法在Windows手机模拟器中加载。我运行了认证工具包,发现应用程序正在使用受限api(advapi32.dll中的CryptGenRandom)。删除该特定函数调用已解决的问题。