【问题标题】:zlib for WinRT?用于 WinRT 的 zlib?
【发布时间】:2012-12-03 18:10:28
【问题描述】:

我需要 zlib 库来开发 Windows Store 应用程序。

有人将 Win32 zlib 项目转换为 WinRT 了吗?

谁能描述将现有的win32静态库项目转换为winRT的步骤?

【问题讨论】:

    标签: c++ visual-studio-2012 zlib windows-store-apps windows-store


    【解决方案1】:

    Visual C++ 已经是 WinRT 开发支持的语言,如果您不想使用 zlib,只需将其与您的解决方案一起编译即可。没有什么可以阻止您在 WinRT 中重用标准 ISO C 和 C++ 库,如果您使用 C++ 语言,您可能必须将库的某些方面公开为 WinRT 组件,但前提是您需要与设施交互像 XAML 或其他 WinRT 语言,但这应该是在公园里散步。不是一件非常困难的事情。

    在 WinRT 中支持 C++ 的全部意义在于允许将主要是本机应用程序的现有生态系统移植到 Windows 应用商店。 zlib 也不例外。不支持非标准 ISO C 和 C++(例如套接字),但您可以插入替代方案,只需检查您使用的库是否具有某种可移植性支持。

    【讨论】:

    • +1,谢谢!我花了 小时 玩 zlib 库,我能够将 zlib (zlibstat) 项目转换为 Windows Store 库项目(x86、x64 和 ARM(有几个解决方法) )。 zlib 使用的汇编代码在 x86 和 x64 上运行良好,但在 ARM 的情况下,我不得不绕过汇编并调整一些编译器指令以使其工作。然后创建了一个 Windows 应用商店 C++ 空白应用程序 (xaml) 项目,使用了三个 lib 文件(x86_zlibstat.lib、x64_zlibstat.lib、ARM_zlibstat.lib)并使用Store > Create App Package 验证了该包。它成功了!不过还没有测试功能。
    • 这是我从现有代码转换而来的第一个 Windows 应用商店库项目。但总有改进的机会。一方面,汇编代码(在 contrib\masmx86 和 contrib\masmx64 文件夹中)具有用于 x86 和 x64 的最长匹配()`和inflate_fast() 函数。对于 ARM,我使用了最长匹配的 C 版本,而不是使用 inflate_fast(),使用 inflate()。如果我们有 inffasx64.asmgvmat64.asm 的等效 ARM 汇编代码,那就太好了。
    • @Annie 我知道这是一篇旧帖子。但我目前正在将一个库移植到依赖于 zlib 的 C++/CX。我不知道如何使 zlib 适合 Windows Store 应用程序。你能给我一些指示吗?
    • @user1510539 您需要将 zlib 编译为静态库,然后将该库添加为依赖项,库输入。查看在 C++/CX 中使用静态库的教程,你应该很好。
    【解决方案2】:

    WinRT 对于现有的 C 库函数非常有限。这意味着几乎所有跨平台 C 库(AFAIK,我不是 WinRT 开发人员)都无法用于该目标。

    对于zlib的情况,还有一个替代方案:see this question

    编辑:为了澄清我上面所说的内容,我挖掘了 WinRT 不存在的所有 CRT 函数的列表,您可以找到 here。只要 zlib 或任何其他 C 库不依赖于这些函数调用,您就应该能够使用 WinRT 工具来构建该 C 库。我什至找到了project file for zlib on winrt by the Ogre team here,不知道它对你有多大用处。

    【讨论】:

    • 你确定吗?我找不到任何支持的文档,或者,我现在的答案是基于现有的 VC++ 运行时可供使用,这应该绰绰有余。
    【解决方案3】:

    您可以查看this WinRT (Un)Zip component。它已经在生产代码中使用。

    请参阅里面的单元测试,了解如何使用该组件。它可以在包括 ARM 在内的所有 WinRT 架构上编译。但它没有针对 ARM 的自定义 asm。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多