作者largesperm (Ferric)
看板C_and_CPP
标题[问题] C++ unzip library
时间Sun Sep 2 15:08:33 2018
刚接触 win32 application
之後都是接触 python 跟 c#
目前需要用到一个功能是 unzip .zip file
之前写法都是直接找 library 来用 不用设定很多
不过我试了好几天 win32 一直写不出来
我找过最多人用的 zlib 一直跑出
unresolved external symbol *** referenced in function
网路上也很多人有这问题 但是都没找到解答 有一点这麽灰心
但是这老牌子了 能成功能使用的人一定很多 这就有点怪
请问有板友知道 单纯想要 unzip .zip file
要 import library 的话 要怎麽做最简单
谢谢
对了 还有一个疑问 zlib 原本不是要被拿来解压缩用的
他似乎是压缩後会马上解压缩 还得记得忆压缩前的大小
请问这在什麽地方会有这样的应用
谢谢
专案档
https://1drv.ms/u/s!Auk1qqHSCCLiiegynPpLKLrOfyf5Pg
补充说明一下 因为 zlib 的原意不是拿来解压缩用的
所以用的指令是他的 contrib 下面的 minizip
除了 zlib 之外的档案都是从 minizip 来的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.11.247
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1535872116.A.A61.html
※ 编辑: largesperm (114.33.11.247), 09/02/2018 15:11:25
1F:→ bluesoul: 看起来是link有问题 09/02 15:24
2F:→ largesperm: 是的 网路上也都是这样讲 但是大家都没有讨论出一个 09/02 15:31
3F:→ largesperm: 方法 09/02 15:31
4F:→ largesperm: 晚点我直接把专案上传再请大家看看 09/02 15:31
※ 编辑: largesperm (114.33.11.247), 09/02/2018 16:02:31
5F:→ MOONY135: 7z.dll 09/02 16:04
6F:推 Killercat: 我记得zlib是C写的 你有extern "C"? 09/02 17:54
7F:→ Killercat: 以及你的linker flag看看是不是错了 09/02 17:55
9F:→ eye5002003: minizip已经帮你包装到很方便了 09/02 18:56
10F:→ nobodycares: 有些api的设计是会回传你"实际压缩了"多少数据 09/03 20:42
11F:→ nobodycares: 方便做检验跟串流用 09/03 20:43
12F:推 eye5002003: 你使用VS2015去连2005编的lib?自己编一次zlib吧,你专 09/03 23:25
13F:→ eye5002003: 案用的zlib可能是release而你专案用debug才出事(也许) 09/03 23:30
14F:→ firose: dumpbin /exports zlibwapi.lib/dll 没有 unzOpen64 09/04 07:02
15F:→ largesperm: 终於懂了 ... 以前 python 拿 script 来扩充就行 09/04 23:01
16F:→ largesperm: C# 都是用人家做好的 dll C++ 得自己重新 compile 09/04 23:01
17F:→ uranusjr: 我看了一下 Python zipfile 的解压缩是纯 Python 刻的 09/05 01:27
18F:→ uranusjr: 这样你直接参考用 C++ 自己刻一个搞不好最快 09/05 01:28
19F:→ uranusjr: 刻完之後记得放出来造福世界 (合十) 09/05 01:28
20F:→ largesperm: 比较之後 单纯的档案压缩解压缩 用了 miniz 09/05 10:03
21F:→ largesperm: cmake 之後 compile 出 lib 就可以用来参考了 09/05 10:04
22F:→ largesperm: 现在还是有一点很不解 为什麽几乎每个压缩解压缩都是 09/05 10:05
23F:→ largesperm: 说可以解到 heap or mem 这样我要怎麽存取解压出来的 09/05 10:05
24F:→ largesperm: 档案 可能我观念还没有很好 再研究看看 09/05 10:05
25F:推 eye5002003: lib不一定要重编,你用gcc的话大概就不会发这一篇了 09/05 10:10
26F:→ largesperm: 我是这样想的 C# 的平台很明确是 .NET 所以给 dll 09/05 10:29
27F:→ largesperm: 就能用 但是 C++ 平台有很多种 所以大多都是看到 09/05 10:30
28F:→ largesperm: 直接给 .h.c.cpp 然後使用者再拿去自己的平台 compile 09/05 10:31
29F:→ largesperm: 不然的话 作者就得在每个平台 compile 出 lib 09/05 10:31
30F:→ largesperm: 这样想不知道是不是正确的 09/05 10:32
31F:推 eye5002003: 大多数C/C++专案都是要自己去编,native就是要这样 09/05 11:07
32F:推 eye5002003: 对VS使用者来说,作者只提供makefile确实会很头痛(除非 09/05 11:18
33F:→ eye5002003: 像lua一样内容单纯),幸好CMake问世了 09/05 11:20