一些配置:VC++目录->包含目录&&库目录 :添加F:\zlib-1.2.11\contrib\minizip(因为用到了zlib库的unzip的文件)
链接器->输入:添加zlibwapi.lib
链接器->常规->附加库目录:添加F:\zlib-1.2.11\contrib\vstudio\vc11\x64\ZlibDllDebug\(这是我存放zlib的盘符)
#include "stdio.h"
#include "unzip.h"
#include "string.h"
int main(int argc, char* argv[])
{
int err;
char szFileName[255];
//声明结构体
unz_global_info global_info;
unz_file_info file_info;
//打开压缩文件
unzFile uzf = unzOpen64(argv[1]);
//定位到指定文件
err = unzLocateFile(uzf, "classes.dex", 0);
if (UNZ_OK != err)
{
printf("GetFileInZip unzLocateFile failed... error:%d\n");
return err;
}
//获取当前选择的内部压缩文件的信息
err = unzGetCurrentFileInfo(uzf, &file_info, szFileName, sizeof(szFileName), NULL, 0, NULL, 0);
if (UNZ_OK != err)
{
printf("unzGetCurrentFileInfo failed... error:%d\n", err);
return err;
}
//选择打开定位到的文件
err = unzOpenCurrentFile(uzf);
if (err != UNZ_OK)
{
printf("打开指定文件失败!");
return 0;
}
//读取内容
int len = file_info.uncompressed_size;
char * ptr_arr;
ptr_arr = (char*)malloc(len); //动态分配内存
err = unzReadCurrentFile(uzf, ptr_arr, file_info.uncompressed_size);
FILE* fp = fopen("./1.dex","wb+");
fwrite(ptr_arr,1,len,fp); //每次写入1字节的内容,总共写入len次
if (err < 0)
{
printf("unzReadCurrentFile failed... error:%d\n", err);
}
//关闭文件
unzCloseCurrentFile(uzf);
unzClose(uzf);
fclose(fp);
return 0;
}
遇见的一些小错误:
VS2015编译出现的问题:添加_CRT_SECURE_NO_WARNINGS到C/C++->预处理器->预处理器定义