2013-02-02 40 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並提供清理功能。