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

來源:互聯網
上載者:User
文章目錄
  • 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.