您的位置:首页 > 理论基础 > 计算机网络

3、lib7z-Memory从内存或网络解压数据(7z内存解压完成)

2016-10-09 14:52 1226 查看
在编译生成Dec7z.lib后,我们验证一下吧。首先建立一个控制台工程,然后引入这个lib:

#pragma comment(lib,"E:\\mjy\\projects\\build-Dec7z-453VC6Static-Release\\release\\Dec7z.lib")
由于我建的是c++工程,所以需要添加extern "C"来调用lib里的函数:

extern "C" BOOL Extra7zFileToPath(WCHAR* sTargetPath,
HWND hwnd,
BOOL bUpdate,
char* pAllData,
DWORD iLength);


测试数据用app.7z来进行(下面有下载),先读取全部数据到内存:

DWORD iAllDataLengtth = 0;
char* pAllData = NULL;
size_t iReadedSize = 0;

FILE* fp = NULL;
fp = fopen("C:\\Users\\Admin\\Desktop\\app.7z","rb");
if(fp == NULL)
{
printf("--open dail Desktop app.7z");
return FALSE;
}
else
{
fseek(fp,0,SEEK_END);
iAllDataLengtth = ftell(fp);

fseek(fp,0,SEEK_SET);
pAllData = (char*)malloc(iAllDataLengtth);
memset(pAllData,0,iAllDataLengtth);
iReadedSize = fread(pAllData,1,iAllDataLengtth,fp);

printf("--iAllDataLengtth:%d\n",iAllDataLengtth);
printf("--iReadedSize:%d\n",iReadedSize);
fclose(fp);
}


接下来,开始解压了,"C:\\Users\\Admin\\Desktop\\KuPlayer" 是解压的目录

Extra7zFileToPath(L"C:\\Users\\Admin\\Desktop\\KuPlayer",
NULL,
FALSE,
pAllData,
iAllDataLengtth);


来看一下结果吧


我们成功了!欢呼吧,哈哈!

不忍私藏,提供测试工程和数据下载:
http://download.csdn.net/detail/hats8888/9649148
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  7z lib7z Dec7z
相关文章推荐