2013-02-02 73 views
3

Windows Phone 8是否有升级二进制文件?我主要在寻找诸如shared_ptr和线程等基本的东西。请注意,线程既需要为ARM构建,又需要使用正确的平台调用,而shared_ptr正常工作。升级为Windows Phone 8?

如果不是,我该如何为Windows Phone 8构建boost::thread

更新:我检出了WinRT API和boost源码。线程在boost中的窗口很大程度上依赖于线程本地存储(TLS),但WinRT不支持此功能。然而,似乎有一些光纤本地存储(FLS),但它不完全相同。

+1

为什么不使用'std :: shared_ptr'和'std :: thread'? – Ferruccio

+0

最终我确实做到了。这很麻烦,因为我不得不修补整个第三方库。 – vidstige

+0

此更新非常有用。 WinRT或WinPRT不支持TLS。国际海事组织,我们需要开始区分运行时间。在这种情况下,它是相同的区别,但不是在所有情况下(例如:winsock)。 – Robert

回答

0

我正在编译一些依靠提升的静态库,所以我不认为这是一个问题。

+1

是的,一些提升部分工作正常,而其他部分显然不能。例如线程需要链接一些二进制文件。在Windows Phone 8上,我们需要使用Windows系统调用进行线程化的ARM二进制文件... – vidstige

+0

我完全依赖于C++ 11线程,目前几乎所有的编译器和平台都支持C++ 11线程。编译boost for arm似乎并不是一个问题(我不是我们团队中的那个人做这项工作 - 我只是建立/使用它 - 但这不是我的印象,需要编译到ARM的任何工作)。实际上看看我们的WinRT分支,那部分与原始分支没有区别。 – dotMorten

+0

没问题,所以如果我理解正确的话,你可以增强自我。我如何为Windows Phone 8构建它?如果我运行bjam它建立我的Windows桌面...查看更多的信息在这里:http://www.boost.org/boost-build2/doc/html/bbv2/jam.html – vidstige

1

有日期2014年7月18日的official page on this,确认一些升压使用的API中未提供在Windows Store中的库和Phone应用程序的,并且有这么一句话我们已经做了改进的Boost构建系统支持将Windows Runtime for Windows Store和Phone作为目标。

0

从Visual Studio 2013 Update 4开始,您可以编译使用TLS APIs的源代码,因为它们是作为内嵌转发到FLS APIs(与Store兼容)的。显然,预编译的二进制文件将无法正常工作,因为它们将尝试直接绑定到TLS

仅供参考因为TLS被弃用/禁用的原因是因为如果线程终止,可能会泄漏内存。如果在Store应用程序中使用TLS API,则它们将具有相同的潜在内存泄漏问题(FlsCallback提供给FlsAlloc的是null),因此请考虑转移到TLS并提供清理功能。