一些配置: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++->预处理器->预处理器定义