7z系列之一 7zip SDK中C 模組的編譯

2021-09-23 01:31:21 字數 1380 閱讀 6814

最近想使用7zip壓縮,就研究了下7zip的sdk,將過程留下,分享與大家。這是本篇系列的第一篇,主要內容就是編譯。

嚴格來說,7zip這個詞是有問題的,因為官方使用了不同的詞來表達恰當的含義,如下圖所示:

因為這次研究的主要目的就是在c++中解壓縮7z格式檔案,為了方便下文就稱為7zip。

目前版本:9.20  (2010-11-18 更新)

檔名:lzma918.tar.bz2

大小:500kb

7zip中提供了多種語言支援, 平常使用多的是c的源**和c++版本編譯後基於com的7z.dll.這個dll檔案並不是直接編譯出來的,而是sdk中某個編譯後的dll檔案改名而來。sdk中檔案說明在lzma.txt中,大家可以閱讀一下加深了解。

c++相關的檔案都在cpp目錄中,編譯相關的檔案位置如下:

7zipsdk\cpp\7zip\bundles\

幾個目錄功能如下:

alone7z

編譯後是7z.exe, 只支援7z/lzma/bcj/bcj2演算法

format7zextractr

編譯後是7zxr.dll, 提供7z/lzma/bcj/bcj2的解壓縮

format7zr

編譯後是7zr.dll, 提供7z/lzma/bcj/bcj2的壓縮和解壓縮

lzmacon

編譯後是lzma.exe, 只提供lzma的壓縮和解壓縮

幾個目錄下模組編譯過程差不多,這裡以編譯7zxr.dll為例。7zip sdk中cpp模組並沒有提供vs對應的vcproj或者sln檔案,而是使用的make檔案,因此需要在命令列下使用nmake來編譯。

在不同版本的vs中,提供了不同版本的nmake檔案,因此編譯前需要呼叫對應的vs引數設定命令來設定,以裝在c盤program files下的vs2005為例:

執行:

"c:\program files\microsoft visual studio 8\common7\tools\vsvars32.bat"
然後進入對應的7zipcpp模組目錄中,執行nmake指令:

編譯後的檔案在o目錄中,檔名為7zxr.dll

C 命令列解壓7z檔案

最近專案維護過程中需要解壓7z檔案。大家可以通過去了解這個犇b的壓縮解壓工具。在windwos系統的cmd裡頭,可以檢視7z.exe的命令列引數。如下圖所示 用c 呼叫例子如下 protected void page load object sender,eventargs e 可以用捕捉事件和無限...

命令列壓縮解壓一 7z

命令列壓縮解壓一 7z 1 簡介 7z,全稱7 zip,是一款開源軟體。是目前公認的壓縮比例最大的壓縮解壓軟體。主頁 中文主頁 主要特徵 全新的lzma演算法加大了7z格式的壓縮比 支援格式 壓縮 解壓縮 7z,xz,bzip2,gzip,tar,zip 僅解壓縮 arj,cab,chm,cpio,...

7z命令列引數中的路徑

最近在自動化的過程中用到了7z命令列工具,發現其引數中的路徑挺有意思的,在此總結一下。本文中所有demo使用的7z版本為 15.14 x64。下面的命令會把g temp 目錄和目錄下的所有檔案打包到壓縮檔案abc.zip中。7z.exe a abc.zip g temp 注意,此時壓縮包中是包含te...