文章目錄
- 7zip
- SDK
- 7zip SDK中的C++模組
- 編譯7zxr.dll
最近想使用7zip壓縮,就研究了下7zip的SDK,將過程留下,分享與大家。這是本篇系列的第一篇,主要內容就是編譯。
7zip
嚴格來說,7zip這個詞是有問題的,因為官方使用了不同的詞來表達恰當的含義,如所示:
因為這次研究的主要目的就是在C++中解壓縮7z格式檔案,為了方便下文就稱為7zip。
SDK
:http://www.7-zip.org/sdk.html
目前版本:9.20 (2010-11-18 更新)
檔案名稱:lzma918.tar.bz2
大小:500KB
7zip SDK中的C++模組
7zip中提供了多種語言支援, 平常使用多的是C的原始碼和C++版本編譯後基於COM的7z.dll.這個DLL檔案並不是直接編譯出來的,而是SDK中某個編譯後的DLL檔案改名而來。SDK中檔案說明在lzma.txt中,大家可以閱讀一下加深瞭解。
將下載的lzma918.tar.bz2解壓後,結構如下:
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
幾個目錄下模組編譯過程差不多,這裡以編譯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指令:
nmake
參考如:
編譯後的檔案在O目錄中,檔案名稱為7zxr.dll