C++ 如何提高7z.exe的可移植性
我正在开发一个需要解压缩C++ 如何提高7z.exe的可移植性,c++,7zip,C++,7zip,我正在开发一个需要解压缩.zip文件的程序。在尝试了几种不同的方法之后,我发现唯一能满足我所有需求的方法是7z.exe。它在我开发的过程中非常有效,因为我可以将可执行文件的位置硬编码到代码中。但是,如果其他人尝试使用它,该部分将不起作用。有没有办法让他们访问这个?谢谢 我建议您使用压缩库(查看libarchive:)。如果不能做到这一点,则应随应用程序一起提供7z.exe及其依赖项,将它们放置在主可执行文件的固定相对位置。 然后使用GetModuleFileName获取主可执行绝对路径,使用pa
.zip
文件的程序。在尝试了几种不同的方法之后,我发现唯一能满足我所有需求的方法是7z.exe
。它在我开发的过程中非常有效,因为我可以将可执行文件的位置硬编码到代码中。但是,如果其他人尝试使用它,该部分将不起作用。有没有办法让他们访问这个?谢谢 我建议您使用压缩库(查看libarchive:)。如果不能做到这一点,则应随应用程序一起提供7z.exe及其依赖项,将它们放置在主可执行文件的固定相对位置。
然后使用GetModuleFileName
获取主可执行绝对路径,使用pathcCombine
剥离并与相对路径组合:
char filename[MAX_PATH];
GetModuleFileName(NULL,filename,(sizeof(filename))/(sizeof char));
PathCchRemoveFileSpec(filename,(sizeof(filename))/(sizeof char));
PathCchCombine(filename,(sizeof(filename))/(sizeof char),filename,"./7zip/7zip.exe");
//the absolute path of 7z.exe is now in filename
GetModuleFileName
的文档:
pathchremovefilespec
:
对于路径组合
:
char filename[MAX_PATH];
GetModuleFileName(NULL,filename,(sizeof(filename))/(sizeof char));
PathCchRemoveFileSpec(filename,(sizeof(filename))/(sizeof char));
PathCchCombine(filename,(sizeof(filename))/(sizeof char),filename,"./7zip/7zip.exe");
//the absolute path of 7z.exe is now in filename
我想您可以使用lib7zip。7zip是开源的-请随意使用:我没有想到压缩库,谢谢!