【发布时间】:2014-09-09 04:16:12
【问题描述】:
我的要求是解压缩我从 Linux 平台上的服务器接收到的 zip 文件。
现在我的C/C++ code 应该解压缩文件夹以接收json 文件。
我在网上做了研究,发现我可以使用 zlib 库来达到这个目的,但是 zlib 无法解压缩 .zip 文件,但它的 contrib 文件夹中有 minizip 可用于此目的.
推荐人:Simple way to unzip a .zip file using zlib
我下载了zlib源文件:
zlib source code, version 1.2.8, zipfile format (678K, MD5 checksum 126f8676442ffbd97884eb4d6f32afb4)来自http://www.zlib.net/
现在我去zlib-1.2.8\contrib\minizip尝试编译miniunz.c
我尝试make all,但出现以下错误:
[@DELL-BUILD03 minizip]$ make
cc -c -O -I../.. miniunz.c
cc -c -O -I../.. unzip.c
cc -c -O -I../.. ioapi.c
make: *** No rule to make target `../../libz.a', needed by `miniunz'. Stop.
我尝试手动将预编译的libz.a 放入zlib-1.2.8 文件夹中。
但仍然是同样的错误。
我该如何继续和unzip 一个示例json.zip 文件夹?
【问题讨论】:
-
如果文件存在并且有足够的最后修改日期,它应该可以工作。不过,我建议您查看 code.google.com/p/miniz,非常好的单源文件 zip 处理程序。
-
使用 make 构建 zlib 两个目录,它会在那里留下一个 libz.a。然后在 minizip 目录下 make。
-
@MarkAdler 我确实尝试将预编译的
libz.a放在那里,但仍然出现同样的错误。zlibmake 没有任何target或build rule -
@keltar 也尝试过
miniz.. 我再次尝试使用它.. 为我的json.zip使用预编译的example4----- 出现以下错误[DELL-BUILD03 bin_linux]$ ./example4 json.zip a.txt Input file size: 266631 tinfl_decompress_mem_to_callback() failed with status 0! [DELL-BUILD03 bin_linux]$ -
@keltar 试过
miniz.. 它能够解压缩它自己压缩的文件.. 服务器接收到的文件出现上述错误.. 接收到的zip文件的结构是json.zip-> it contains one file 320458_0902_00_05_502cf.json