中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VS2015編譯7z.dll

發布時間:2020-03-19 18:59:10 來源:網絡 閱讀:4615 作者:Chinayu2014 欄目:編程語言

(1)到官網下載源碼,http://www.7-zip.org/download.html,下載如下:

VS2015編譯7z.dll

這個源碼包,并解壓


(2)打開cmd命名行,粘貼如下:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat"(帶雙引號)

即建立VS2015的編譯環境


(3)解除Build.mak的只讀性,修改源碼\CPP\Build.mak"33行中的"-OPT:NOWIN98"

去掉"-OPT:NOWIN98",保存


(4)在命令行中CD到CPP\7zip所在目錄,執行nmake編譯Build.mak,如下:

nmake NEW_COMPILER=1 MY_STATIC_LINK=1


幾分鐘后編譯完成,到相應的文件夾找到編譯后的文件.Format7zF工程生成的文件,

在CPP\7zip\Bundles\Format7zF\O文件夾中即7z.dll

--------------------------------------------------------------------------------------

要生成靜態庫,請進入..\C\Util\7z目錄,將工程屬性改為lib類型.出現錯誤時,請修改如下設置:

1.項目”—>“屬性”—>“C/C++” “常規”—>“調試信息格式”—>選擇“程序數據庫(/Zi)”或“無”

或者

2 .項目”—>“屬性”—>“C/C++”“代碼生成”—>“啟用函數集鏈接”—>選擇“是 (/Gy)”


(5)編譯好了7z.dll如何調用呢?它的源碼相當復雜,在網上找了一個封裝類7zip-CPP,下載鏈接為:

# Fork of SevenZip++ for VS2015, VS2017 (https://github.com/getnamo/7zip-cpp)

是一個靜態庫工程,會生成7zpp_ud.lib,請放到您的測試工程目錄中。

7zip-cpp-master\7zpp是這個靜態庫的工程。工程目錄中有個7z文夾為空,請在7z官網下載lzma源碼包[LZMA SDK](http://www.7-zip.org/sdk.html),將LZMA的C和CPP兩個文夾復制過來到7z文件夾下。

否則不會生成靜態庫7zpp_ud.lib

(6)建一個窗口工程,來測試。先包含頭文件,如下:

#include <7zpp.h>

窗口類中聲明成員:

CScale3DCProgress progressProc;//回調類,繼承于SevenZip::ProgressCallback

.cpp中測試代碼如下:

SevenZip::SevenZipLibrary lib;//聲明庫加載類

//在窗口構造函數中,添加代碼:
BOOL ret = lib.Load(_T("7z.dll"));

void Ctest7zDlg::OnBnClickedButton1()
{//創建壓縮類
SevenZip::SevenZipCompressor compressor(lib, _T("abc"));
compressor.SetCompressionFormat(SevenZip::CompressionFormat::SevenZip);
compressor.UseAbsolutePaths(false);
compressor.AddFile(_T("c:\\1.exe") );//添加文件
compressor.AddDirectory(_T("C:\\util"));//添加文件夾 	
compressor.DoCompress(&progressProc);
}

還有一點,將7zip-cpp中的7zip-cpp-master\Include\7zpp文件夾復中到測試工程中,并添加相應個路徑。(窗口頭文件中包含的7zpp.h就來自這個文件夾)

(7)回調類的代碼如下:

#include "ProgressCallback.h"
#include "SevenString.h"
using namespace SevenZip;
class CScale3DCProgress :public SevenZip::ProgressCallback
{
public:
	CScale3DCProgress();
	~CScale3DCProgress();
        //壓縮前調用
	void OnStartWithTotal(const TString& archivePath, unsigned __int64 totalBytes);
	//壓縮時,更新完成字節數
	void OnProgress(const TString& archivePath, unsigned __int64 bytesCompleted);
	//當進度到達100%時調用
	void OnDone(const TString& archivePath);
	//調個文件到達100%時調用
	void OnFileDone(const TString& archivePath, const TString& filePath, unsigned __int64 bytesCompleted);
	//是否中斷操作,返回true表示中斷操作
	bool OnCheckBreak();
};

這是壓縮時的回調類,還有解壓的回調類,查看壓縮包的文件列表回調類,請參看原文檔。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图木舒克市| 合作市| 光泽县| 白银市| 临湘市| 北川| 象州县| 叙永县| 永春县| 古田县| 饶阳县| 台中市| 鹤山市| 石柱| 信阳市| 时尚| 古田县| 土默特右旗| 长武县| 克东县| 曲沃县| 桃源县| 道真| 绍兴市| 会同县| 申扎县| 寻甸| 涡阳县| 齐齐哈尔市| 高安市| 鸡西市| 兰坪| 光山县| 莆田市| 通州市| 明光市| 沧源| 错那县| 微山县| 屯留县| 澎湖县|