C++ 我无法使用libzip正确提取可执行文件

C++ 我无法使用libzip正确提取可执行文件,c++,libzip,C++,Libzip,我试图使用下面的代码从zip存档中提取一个可执行文件,但由于某些原因,它没有正确地将文件输出到磁盘。当我尝试运行提取的文件时,我收到一个错误“此应用程序无法在您的PC上运行”,提取时文件大小为309 KB,因此看起来所有数据都在那里。我的代码有什么问题?当我手动提取它时,它运行得很好。另外,当我试图提取一个.txt文件时,它会为每个换行写2个换行,而不是1个 int error = 0; zip *z = zip_open("pathtozip.zip", 0, &error); st

我试图使用下面的代码从zip存档中提取一个可执行文件,但由于某些原因,它没有正确地将文件输出到磁盘。当我尝试运行提取的文件时,我收到一个错误“此应用程序无法在您的PC上运行”,提取时文件大小为309 KB,因此看起来所有数据都在那里。我的代码有什么问题?当我手动提取它时,它运行得很好。另外,当我试图提取一个.txt文件时,它会为每个换行写2个换行,而不是1个

int error = 0;
zip *z = zip_open("pathtozip.zip", 0, &error);

struct zip_stat st;
zip_stat_init(&st);
zip_stat(z, "file.exe", 0, &st);

char *contents = new char[st.size];

zip_file *f = zip_fopen(z, "file.exe", ZIP_FL_COMPRESSED);
zip_fread(f, contents, st.size);
zip_fclose(f);

if (std::ofstream("C:\\users\\admin\\desktop\\test.exe", std::ofstream::binary).write(contents, st.size))
    std::cout << "File Extracted" << std::endl;

zip_close(z);
int错误=0;
zip*z=zip_open(“pathtozip.zip”,0,&错误);
结构zip_stat st;
zip_stat_init(&st);
zip_stat(z,“file.exe”,0,&st);
字符*内容=新字符[st.size];
zip_file*f=zip_fopen(z,“file.exe”,zip_FL_COMPRESSED);
zip_fread(f、目录、标准尺寸);
zip_fclose(f);
if(std::ofstream(“C:\\users\\admin\\desktop\\test.exe”,std::ofstream::binary)。write(contents,st.size))
标准::cout
ZIP\u FL\u COMPRESSED
-读取压缩数据。否则数据将被解压缩

这意味着您将以压缩形式从存档中读取数据


只需删除该标志即可获得未压缩的内容。

为什么您认为提取代码有问题?可能只是您正确地提取了文件,但该文件无法在您当前的计算机上执行。因为当我使用WinRAR在zip存档中手动提取file.exe时,它在我的计算机上执行没有问题。@TEDLYNGO我认为您是对的,因为当我为标志键入0时,它按预期工作。谢谢。@xadec4太好了。我把它变成了一个答案。欢迎接受:-)