第一步:
从MFC资源文件中获取资源文件内存中地址:
HINSTANCE
hInstance
=
GetModuleHandle
(0);
HRSRC
hrsrc
=
FindResource
(
hInstance
,
MAKEINTRESOURCE
(
IDR_ZIP1
), L
"ZIP"
);
HANDLE
hglob
=
LoadResource
(
hInstance
,
hrsrc
);
void
*
zipbuf
=
LockResource
(
hglob
);
unsigned
int
ziplen
=
SizeofResource
(
hInstance
,
hrsrc
);
第二步:从内存中解压文件到指定路径文件夹:
void
CJFUtils
::
Unzip
(
void
*
zipbuf
,
const
unsigned
int
ziplen
,
const
TCHAR
*
UnzipBaseDir
)
{
HZIP
hz
;
hz
=
OpenZip
(
zipbuf
,
ziplen
, 0);
SetUnzipBaseDir
(
hz
,
UnzipBaseDir
);
ZIPENTRY
ze
;
GetZipItem
(
hz
, -1, &
ze
);
int
numitems
=
ze
.
index
;
for
(
int
zi
= 0;
zi
<
numitems
;
zi
++)
{
GetZipItem
(
hz
,
zi
, &
ze
);
UnzipItem
(
hz
,
zi
,
ze
.
name
);
}
CloseZip
(
hz
);
}
这位大神的引擎:特点:不带dll和lib;使用方便;
第三步:Zip-utils 使用方法:
下载后的目录截图:
2、用VS打开实例:
D:\code\zip\zip_utils_src\examples\simple
3、研究实例中的压缩和解压方法:
第四步:zip-Utils使用:
1、将unzip.cpp、unzip.h、zip.cpp、zip.h四个文件拷贝到工程目录下;
2、将以上4个文件引入到自己的项目中;即可按照第二步的方式使用了。
参考文档:
PS:该方法支持x64 和 x86; 该方法相对zlib和 7z 区别:
使用方便,使用不需要lib和dll.