1

我需要zlib庫來開發Windows應用商店應用。zlib for WinRT?

有沒有人將Win32 zlib項目轉換爲WinRT呢?

任何人都可以請描述轉換現有的win32靜態lib項目到winRT的步驟?

回答

2

Visual C++已經是WinRT開發的支持語言,如果您不想使用zlib,只需將它與您的解決方案一起編譯。沒有什麼能夠阻止您在WinRT中重用標準ISO C和C++庫,如果您使用的是C++語言,那麼您可能必須將庫的某些方面暴露爲WinRT組件,但只有當您需要與設施交互時像XAML或其他WinRT語言,但這應該是在公園散步。不是很難做到的事情。

在WinRT中支持C++的重點在於允許將基本本地應用程序的現有生態系統移植到Windows應用商店。 zlib不是一個例外。非標準ISO C和C++(如套接字)不受支持,但您可以選擇其他插件,只需檢查您使用的庫是否具有某種可移植性支持。

+1

+1,謝謝!我花了*小時*玩zlib庫,我可以將zlib(zlibstat)項目轉換爲Windows Store庫項目(x86,x64和** ARM **(以及兩種解決方法))。 zlib使用的彙編代碼可以很好地與x86和x64配合使用,但是在ARM的情況下,我不得不繞過彙編並調整了一些編譯器指令以使其工作。然後創建一個Windows Store C++空白應用程序(xaml)項目,使用三個lib文件(x86_zlibstat.lib,x64_zlibstat.lib,ARM_zlibstat.lib),並使用Store> Create App Package驗證包裝。雖然沒有測試過功能。 – Annie

+1

這是第一個Windows存儲庫項目,我從現有代碼轉換而來。但總有改善的機會。例如,彙編代碼(在contrib \ masmx86和contrib \ masmx64文件夾中)對x86和x64具有longest_match()'和'inflate_fast()'函數。對於ARM,我使用了longest_match的C版本,而使用'inflate_fast()',使用'inflate()'。如果我們有用於'inffasx64.asm'和'gvmat64.asm'的equivalnet ARM彙編代碼,那會很好。 – Annie

+0

@安妮我知道這是一箇舊帖子。但我目前正在將一個庫移植到依賴於zlib的C++/CX中。我不知道如何適應Windows應用商店的zlib。你能給我一些指導嗎? – user1510539

1

對於存在的C庫函數,WinRT非常有限。這意味着幾乎所有的跨平臺C庫(AFAIK,我不是WinRT開發者)都不能用於該目標。

對於ZLIB的情況下,還存在另一種:see this question

編輯:澄清我在說什麼上面,我挖出來的所有CRT函數是缺席的WinRT的列表,你可以找到here。只要zlib或其他C庫不依賴於這些函數調用,就應該能夠使用WinRT工具來構建該C庫。我甚至發現一個project file for zlib on winrt by the Ogre team here,不知道它對你有多大用處。

+3

你確定嗎?我找不到任何支持的文檔,或者,現在我正在根據我的答案,現有的VC++運行時可用,應該足夠了。 –

0

您可以查看this WinRT (Un)Zip component。它已用於生產代碼。

查看單元測試內部如何使用組件。它編譯所有WinRT體系結構,包括ARM。它雖然沒有ARM的自定義asm。