我有一個針對Windows-10桌面的C#應用程序&移動平臺。我的應用程序使用C++/cx綁定調用C++編寫的Windows運行時組件。
我的C++代碼使用線程本地存儲API的喜歡TlsAlloc,TlsGetValue,TlsSetValue和TlsFree。 當我運行Windows應用程序認證套件測試(WACK測試)時,它會在商店應用程序中抱怨這些api不可用。 UWP Windows-10:如何在商店應用程序中使用線程本地存儲api
◦API TlsAlloc in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsFree in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsGetValue in kernel32.dll is not supported for this application type. sample.dll calls this API.
◦API TlsSetValue in kernel32.dll is not supported for this application type. sample.dll calls this API.
我不能看到這些API的替代品用於Windows的10商店應用的。這MSDN page 只談談這些api的可用性在Windows Phone 8。我無法找到關於這些API的任何具體信息Windows的10
我編譯使用我的本地C++庫-DWINAPI_FAMILY = WINAPI_FAMILY_APP標誌
任何建議將高度讚賞
一定要保持WACK更新,這與每一個變化SDK版本。如果你想要一個乾淨的報告,那麼就像UCRT那樣[使用FlsAlloc代替](http://stackoverflow.com/a/27979758/17034)。 –
Hi @HansPassant,謝謝你的回覆。當你建議使用FlsAlloc,這是否意味着,在我的代碼中,我需要將所有對TlsAlloc的調用改爲FlsAlloc,或者是否有宏設置可以爲我做這個技巧。 [MSDN頁面](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686801(v = vs.85).aspx)表示「** Windows Phone Store應用程序調用此函數將其替換爲對FlsAlloc **的內聯調用「。這種替代技巧是否發生在Windows-10上?還是僅限於WinPhone-8? –
SDK v10允許任何UWP應用程序使用TlsAlloc()。這就是爲什麼你需要確保你有最新的WACK。 –