问题标签 [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 投票
0 回答
659 浏览

c++ - libzip:在加载之前验证 zip 文件

我使用 libzip 在我的应用程序中打开 zip 文件,为了确保在 zip 文件损坏的情况下表现良好,我手动损坏了一个 zip 文件(通过使用文本编辑器删除一些随机行)并尝试加载该文件。但是,这会挂起整个应用程序,因为 zip_fread() 永远不会返回。

是否有在加载之前确定 zip 文件是否有效以避免这种情况的地方?

更新

行为似乎取决于版本,所以我可能只需要更新。这是我在 Windows、Mac OS 和 Linux 上使用的代码:

在 OS X 上,这个片段不会返回错误(我对所有平台都使用了相同的文件)。相反,下面的 zip_read() 调用只是挂起。在其他平台上 zip_read() 立即返回结果 < 0,因此很容易在此处捕获错误。

0 投票
1 回答
1319 浏览

windows - libzip Windows compilation for libraries

I need libzip.lib .h to use libzip in other projects. So I followed libzip with Visual Studio 2010 and all is fine until step 11. In fact, I open C:\devel\libzip-0.10.1\build\libzip.sln, execute "Generate the solution" and I get the following errors :

First :

2> zip_set_file_compression.c

2>....\lib\zip_set_file_compression.c(63): error C2275: 'zip_int32_t' : non conform use of this type as expression

2> C:/devel/libzip-0.11.1/lib\zipconf.h(33) : see declaration of 'zip_int32_t'

2>....\lib\zip_set_file_compression.c(63): error C2146: syntax error : missing ';' before identifier 'old_method'

2>....\lib\zip_set_file_compression.c(63): error C2065: 'old_method' : non declared identifier

2>....\lib\zip_set_file_compression.c(67): error C2065: 'old_method' : non declared identifier

I didn't change anything in source files so ... I don't understand. I'll check the file to see but I don't want to change things and then nothing works!

And secondly :

LINK : fatal error LNK1181: impossible to open file '..\lib\Release\zip.lib'

And indeed, I don't have any zip.lib file! Where do I get it? Has it to be created/generated in one of the steps 1 to 10? Do I have to get it on web?

0 投票
1 回答
699 浏览

android - 安卓NDK。libzip 停止到子文件夹

libzip用来阅读原生代码中的 APK 内容。

assets/sounds/voice仅针对 libzip 功能的文件夹“消失”。

  • libzip仍然看到其他文件。
  • 我仍然可以assets/sounds/voice在项目文件夹中看到它。
  • 我做clean了很多次。
  • 我仍然可以APKbin文件夹中解压缩文件,并且可以看到所有必需的文件。(包括文件assets/sounds/voice夹中的文件)

我添加了小型日志记录命令,它不会打印文件assets/sounds/voice夹中的文件。所有其他文件都存在。

我不知道在哪一步出了什么问题。eclipse 是否使用我的 libzip 无法读取的新格式压缩 ZPK?或者可能是什么原因。

0 投票
1 回答
1162 浏览

java - Jenkins Java 编译导致 Java 崩溃

当我尝试在我的 Jenkins 服务器中使用 Gradle 编译一些 Java 代码时,我一直在 Java 中崩溃。有人知道任何可能的解决方案吗?似乎libzip有某种问题......

我正在使用 Ubuntu 服务器。完整的错误报告: http: //pastebin.com/dnmFTbLg

有谁知道为什么 Java 在尝试执行编译时崩溃?

0 投票
2 回答
367 浏览

c++ - Extracting data from compressed file returns random data

I'm using libzip to extract the content of each file in a zip into my own data structure, a C++ immutable POD.

The problem is that every time I extract the content of a file, I get some random data with tacked on to the end. Here's my code:

0 投票
1 回答
1418 浏览

c++ - 创建 ZIP 存档压缩级别 (libzip)

我正在尝试使用 libzip 压缩文件,我似乎成功了,但我似乎无法找到一种方法来更改我必须重新实现的压缩级别(zip 工具支持从 1(最快压缩速度)到 9(最小存档)的值) . 有没有办法这样做?

0 投票
1 回答
761 浏览

c++ - libzip 无法关闭文件

我目前在 C++11 程序中使用 libzip 来提取压缩文件的内容并将它们存储到一个数据结构中,该结构还将保存与文件相关的元数据。

我正在使用当前的方法来分解 zip 文件并获取其中每个文件的内容:

我的问题是我得到 gdb 指向的随机分段错误zip_fclose(file);

调试这个的最佳方法是什么?正如我所说,它间歇性地发生,所以很难确定确切的原因。

0 投票
1 回答
123 浏览

android - Kindle Fire HD 上未加载 APK 资源

我为 Amazon Kindle Fire HD 开发了一个应用程序。在分发时,我从亚马逊收到一份报告,称它几乎没有在所有 Kindle 设备上运行,并且显示黑屏。他们向我发送了一个 logcat 日志文件,我发现无法直接从 APK 文件加载某些资产(通过 C++、zlib 和 libzip 访问)。

如果我通过 Eclipse 启动它,一切都运行良好。

知道出了什么问题吗?谢谢!

更新:

我发现这与zip_open(). 此调用失败并返回ZIP_ER_INCONS

0 投票
3 回答
1256 浏览

c++ - 未声明手册中的 Libzip zip_dir_add - C/C++

我对 C/C++ 编程很陌生,所以请考虑到这一点。

问题 :

在使用 libzip 库时,据说手册中描述的某些函数在编译时没有在作用域中声明。我阅读了 2011 年编写的本教程(法语抱歉)。它使用不同的函数名称(zip_dir_add 是 zip_add_dir 等。)

我认为这可能是由于安装过程。或者也许我忘了包含一些文件..

这是我到目前为止所做的:

1) 使用 ubuntu 包安装 libzip 库,如下所示:

2)在简单的代码上尝试

这将返回: zip_dir_add 未在此范围内声明

知道是什么原因造成的吗?

提前致谢 !

0 投票
1 回答
673 浏览

c++ - C++ Libzip + 删除 = 核心转储

使用 libzip 时遇到问题。我在 linux 上并且已经使用sudo apt-get install libzip2 libzip-dev(所以它不是最新版本)安装了库。

这是我的代码:

此代码应该获取 filesToZip 文件夹中的两个文件并将它们压缩到 filesZip 文件夹中的 zipTest 文件中。

为此,首先它检查 zipTest 文件是否已经存在。如果是这样,则将其删除。然后它会打开一个 zip 存档,压缩要添加的文件并将它们添加到存档中,然后再关闭存档。

所以我的问题是:

当 zip 存档文件 Zip/zipTest 不存在时,它就可以正常工作。当 zip 存档文件Zip/zipTest 确实存在时,我得到了一个核心转储。

到目前为止我已经尝试过:

  • 我认为这是因为我使用字符串作为文件名。我尝试使用 char 并没有改变任何东西
  • 然后我认为这是因为删除任务没有完成,然后可能会遇到冲突。所以我在每个函数调用之后都放了 sleep(180) (以秒为单位)。它没有改变任何东西
  • 我还尝试仅将一个文件放入存档中。没有改变任何东西
  • 我跑 gdb 看看发生了什么。当 zip 存档已经存在但不存在时,我都尝试了。
    • 如果存档不存在:一切顺利,直到返回 0,然后我看到程序重新定义了 fileToZip 和 fileToZip2,然后再次返回 0,然后将停止。
    • 如果存档已经存在:它会做同样的事情,但会说找不到当前函数的边界。(我在这里读到这意味着 gdb 没有调试信息并且对此不满意..)

有谁知道我的问题是什么?