问题标签 [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.
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?
c++ - 未解析的外部符号 __imp__zip_open 与 libzip (LNK2001)
我最近在 Windows 10 上静态编译了 libzip(和 zlib),我正在 Visual Studio 2017 上使用它。我按照这个线程上的说明进行了修改,使其适应 VS2017 构建,并修改了 CMakelists.txt 以静态构建库:
我将此添加到文件的末尾:
在编译 libzip 时,我还使用了此处的补丁来消除错误。STDIN_FILENO
构建过程很顺利,我添加zlibstatic.lib
到libzipstatic.lib
我的链接器选项,并设置运行时库/MT
我写了这个小代码来看看一切是否正常:
链接静态库而不是DLL时经常出现这种错误,但是我静态编译了libzip(并且我需要使用静态链接),那我该怎么办?
编辑:zipstatic.lib 摘要:
和 zlibstatic.lib 的摘要:
c++ - 使用 Visual Studio 2017 和 cmake 中的 libzip 库
我有一个最初用 Linux 编写的 c++ 程序。该程序使用库 libzip 中的函数:
我现在在 Visual Studio 2017 中的基于 Windows 的平台上工作。一切正常,因为我基本上可以使用与在 Linux 平台上使用的相同的 cmake 文件。但是,在 Linux 中,我使用包管理器来安装 libzip。我在 Windows 中没有该选项。我不知何故需要为 libzip 构建一个 Windows 版本,并将文件(头文件和 lib 文件)包含在我的 CMakeLists.txt 文件中。有人可以为此提供分步指南吗?
c++ - 在 ostream 上使用 std::endl 使我的文件成为二进制文件
我正在开发一个使用 libzip 的项目。我正在使用 c++14 并围绕 libzip 编写了一个小包装器,以使我的生活更轻松。
我有一个std::ostream
围绕继承的自定义类构建的对象std::streambuf
。此 streambuf 使用 libzip 函数写入存档中的文件。
在我使用std::endl
. 当我这样做时,我的所有文本阅读器都将输出文件读取为二进制文件(仅写入字符串)。
我的文本阅读器检测到它的二进制文件,因为在我使用std::endl
NUL 字节的地方,任何内部带有 NUL 字节的文件都被视为二进制文件。
所以我的问题是:这正常吗?有没有办法让我使用std::endl
?
我的代码(已提取,因此可能不完全相同)。
源码.hpp
源码.cpp
主文件
如果我std::endl
在我的主目录中删除,文本文件将被识别为文本文件。如果我添加它,它会被识别为二进制文件。
二进制文件是有效的 utf-8 输出(NUL 字节除外):
谢谢!
c++ - Libzip - 存档错误总是返回 ZIP_ER_OK,即使存档创建失败
我正在使用 switch 语句来检查我正在创建的 libzip zip 存档中错误代码的值。但是,它似乎永远不会返回 0 以外的任何值,即使我故意导致它失败。(我试图将文件复制到 100% 满的 USB 驱动器导致它失败)。
我的用法在这里怎么不正确?
c++ - 如何使用 libZip 为 zip 文件设置密码
我在我的项目中使用libZip,我成功创建了 zip 文件输出,但是我很难为 zip 文件设置密码。
我正在调用zip_set_default_password 函数,我得到了 OK 响应,但是当我尝试提取它时并没有要求输入密码。
代码示例:
当我调用这个函数时,我没问题并创建了 zip 文件,我在这里缺少什么?
LibZip 版本 1.1.3-1,操作系统:fedora 25
谢谢。
php - 使用 PHP zip 扩展构建的 Docker 映像显示“捆绑的 libzip 已弃用”警告
我有一个Dockerfile
这样的构建命令:
我从构建输出中得到这个警告:
警告:不推荐使用捆绑的 libzip,并将被删除。
配置:警告:加密和 bzip2 等某些功能不可用。
配置:警告:建议使用系统库和 --with-libzip。
在没有这些警告的情况下安装 zip 扩展的正确方法是什么?
我完整的 Dockerfile 看起来像:
c - 如何从 C 中使用 libzip 在内存中创建 zip 文件?
我正在尝试使用 libzip 直接在内存中创建一个 zip 文件,而不是磁盘上的文件。我的代码目前非常基本,因为我被困在从 zip_source_buffer 创建必要的 zip_t 结构:
代码编译并运行,但出现错误:
不清楚是否需要 begin_write() ,但它不会产生错误,没有它我会得到相同的结果。
我错过了什么?谢谢
android - 使用 libzip 在 zip 中写入文件
我从这里使用 libzip android 端口。我可以在我的存档调用中添加一个新文件zip_add(_zip, filePath, zip_source_callback)
。它创建一个空文件。我怎样才能将数据写入这个空文件?
我知道我必须以我的zip_source_callback
方法处理它,但我不知道具体是什么以及如何处理。任何帮助将不胜感激。
我的 zip_source_callback 现在看起来像这样:
c++ - CMake:无法链接使用共享 zlib 包装库的简单项目
在我的情况下,我有两个 CMake 项目(如果重要,则使用 MSYS Makefiles 构建):
- 一个是使用 Zlib 和 Libzip 为库用户提供压缩功能的共享库,我们称之为mylib。
- 另一个是使用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
.
谢谢!