问题标签 [libzip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1231 浏览

c - zlib-1.2.11 “太旧” - 编译 libzip-1.3.0 需要 1.1.2

我正在尝试使用 cmake 和 MSVC2017 在 Windows 10 上编译 libzip-1.3.0。

我已经成功编译了最新的 zlib (1.2.11),但是当我尝试编译 libzip 时,我被告知:ZLIB version too old, please install at least v1.1.2

我的 zlib.h 版本定义:

我正在运行的 cmake 命令:

我确实在互联网上找到了一个旧线程,其他人也有类似的问题,但是当我查看CMakeLists.txt文件的相关部分时,它现在看起来是正确的:

那么 - 为什么 zlib 1.2.11 比 1.1.2“旧”,我该如何解决这个问题并编译 libzip?

0 投票
0 回答
1247 浏览

c++ - 未解析的外部符号 __imp__zip_open 与 libzip (LNK2001)

我最近在 Windows 10 上静态编译了 libzip(和 zlib),我正在 Visual Studio 2017 上使用它。我按照这个线程上的说明进行了修改,使其适应 VS2017 构建,并修改了 CMakelists.txt 以静态构建库:

我将此添加到文件的末尾:

在编译 libzip 时,我还使用了此处的补丁来消除错误。STDIN_FILENO

构建过程很顺利,我添加zlibstatic.liblibzipstatic.lib我的链接器选项,并设置运行时库/MT

我写了这个小代码来看看一切是否正常:

链接静态库而不是DLL时经常出现这种错误,但是我静态编译了libzip(并且我需要使用静态链接),那我该怎么办?

编辑:zipstatic.lib 摘要:

和 zlibstatic.lib 的摘要:

0 投票
2 回答
1727 浏览

c++ - 使用 Visual Studio 2017 和 cmake 中的 libzip 库

我有一个最初用 Linux 编写的 c++ 程序。该程序使用库 libzip 中的函数:

https://libzip.org

我现在在 Visual Studio 2017 中的基于 Windows 的平台上工作。一切正常,因为我基本上可以使用与在 Linux 平台上使用的相同的 cmake 文件。但是,在 Linux 中,我使用包管理器来安装 libzip。我在 Windows 中没有该选项。我不知何故需要为 libzip 构建一个 Windows 版本,并将文件(头文件和 lib 文件)包含在我的 CMakeLists.txt 文件中。有人可以为此提供分步指南吗?

0 投票
2 回答
490 浏览

c++ - 在 ostream 上使用 std::endl 使我的文件成为二进制文件

我正在开发一个使用 libzip 的项目。我正在使用 c++14 并围绕 libzip 编写了一个小包装器,以使我的生活更轻松。

我有一个std::ostream围绕继承的自定义类构建的对象std::streambuf。此 streambuf 使用 libzip 函数写入存档中的文件。

在我使用std::endl. 当我这样做时,我的所有文本阅读器都将输出文件读取为二进制文件(仅写入字符串)。

我的文本阅读器检测到它的二进制文件,因为在我使用std::endlNUL 字节的地方,任何内部带有 NUL 字节的文件都被视为二进制文件。

所以我的问题是:这正常吗?有没有办法让我使用std::endl

我的代码(已提取,因此可能不完全相同)。

源码.hpp

源码.cpp

主文件

如果我std::endl在我的主目录中删除,文本文件将被识别为文本文件。如果我添加它,它会被识别为二​​进制文件。

二进制文件是有效的 utf-8 输出(NUL 字节除外):

谢谢!

0 投票
1 回答
302 浏览

c++ - Libzip - 存档错误总是返回 ZIP_ER_OK,即使存档创建失败

我正在使用 switch 语句来检查我正在创建的 libzip zip 存档中错误代码的值。但是,它似乎永远不会返回 0 以外的任何值,即使我故意导致它失败。(我试图将文件复制到 100% 满的 USB 驱动器导致它失败)。

我的用法在这里怎么不正确?

0 投票
2 回答
1474 浏览

c++ - 如何使用 libZip 为 zip 文件设置密码

我在我的项目中使用libZip,我成功创建了 zip 文件输出,但是我很难为 zip 文件设置密码。

我正在调用zip_set_default_password 函数,我得到了 OK 响应,但是当我尝试提取它时并没有要求输入密码。

代码示例:

当我调用这个函数时,我没问题并创建了 zip 文件,我在这里缺少什么?

LibZip 版本 1.1.3-1,操作系统:fedora 25

谢谢。

0 投票
6 回答
71597 浏览

php - 使用 PHP zip 扩展构建的 Docker 映像显示“捆绑的 libzip 已弃用”警告

我有一个Dockerfile这样的构建命令:

我从构建输出中得到这个警告:

警告:不推荐使用捆绑的 libzip,并将被删除。
配置:警告:加密和 bzip2 等某些功能不可用。
配置:警告:建议使用系统库和 --with-libzip。

在没有这些警告的情况下安装 zip 扩展的正确方法是什么?

我完整的 Dockerfile 看起来像:

0 投票
2 回答
2705 浏览

c - 如何从 C 中使用 libzip 在内存中创建 zip 文件?

我正在尝试使用 libzip 直接在内存中创建一个 zip 文件,而不是磁盘上的文件。我的代码目前非常基本,因为我被困在从 zip_source_buffer 创建必要的 zip_t 结构:

代码编译并运行,但出现错误:

不清楚是否需要 begin_write() ,但它不会产生错误,没有它我会得到相同的结果。

我错过了什么?谢谢

0 投票
1 回答
669 浏览

android - 使用 libzip 在 zip 中写入文件

我从这里使用 libzip android 端口。我可以在我的存档调用中添加一个新文件zip_add(_zip, filePath, zip_source_callback)。它创建一个空文件。我怎样才能将数据写入这个空文件?

我知道我必须以我的zip_source_callback方法处理它,但我不知道具体是什么以及如何处理。任何帮助将不胜感激。

我的 zip_source_callback 现在看起来像这样:

0 投票
1 回答
711 浏览

c++ - CMake:无法链接使用共享 zlib 包装库的简单项目

在我的情况下,我有两个 CMake 项目(如果重要,则使用 MSYS Makefiles 构建):

  1. 一个是使用 Zlib 和 Libzip 为库用户提供压缩功能的共享库,我们称之为mylib
  2. 另一个是使用mylib进行压缩的应用程序。它不必担心 Zlib、Libzip 或任何东西。我们称之为app

我在下面创建了一个简单的示例,演示了我遇到的奇怪问题。简而言之,app在运行make时拒绝链接,但前提是在mylib中未注释某些 Libzip 代码(无论如何编译和链接都很好)。

Zlib 和 Libzip 源代码位于 C:/Dev/Libs。

lib/CMakeLists.txt

lib/src/lib.hpp

lib/src/lib.cpp

应用程序/CMakeLists.txt

应用程序/src/app.hpp

应用程序/src/app.cpp

构建mylib的输出

构建应用程序的输出

如果我src = zip_source_buffer_create(0, 1, 0, &error);lib/src/lib.cpp中发表评论,请重新构建然后重新构建应用程序

这会产生预期的结果。

问题必须出在app的 CMakeLists 中,因为mylib构建良好,没有任何链接错误。还是我在mylib中错误地添加了 zlib/libzip ?我需要静态链接到它们,但我无法使用find_package.

谢谢!