从MFC资源文件获取压缩文件内存地址然后直接解压内存中资源文件到物理内存

1 篇文章 0 订阅
第一步:
从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个文件引入到自己的项目中;即可按照第二步的方式使用了。

参考文档:
3、 https://www.cnblogs.com/qingtian224/p/5833456.html (编译报错: uafxcwd.lib 与  LIBCMTD.lib 冲突
PS:该方法支持x64 和 x86; 该方法相对zlib和 7z 区别:
使用方便,使用不需要lib和dll.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值