国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)

這篇具有很好參考價(jià)值的文章主要介紹了Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

bit7z一個(gè)c++靜態(tài)庫,為7-zip共享庫提供了一個(gè)干凈簡(jiǎn)單的接口
使用CMAKE重新編譯github上的bit7z庫,用來解壓/預(yù)覽iso9660,WIm,Zip,Rar等常用的壓縮文件格式。z-zip庫支持大多數(shù)壓縮文件格式

編譯bit7z(C++版本)

bit7z是一個(gè)跨平臺(tái)的c++靜態(tài)庫,它允許通過一個(gè)干凈簡(jiǎn)單的包裝器接口從7-zip項(xiàng)目壓縮/提取歸檔文件到動(dòng)態(tài)庫。
它支持對(duì)文件系統(tǒng)或內(nèi)存進(jìn)行壓縮和提取、讀取存檔元數(shù)據(jù)、更新現(xiàn)有的存檔元數(shù)據(jù)、創(chuàng)建多卷存檔、操作進(jìn)度回調(diào)以及許多其他功能。
壓縮支持格式:7z, XZ, BZIP2, GZIP, TAR, ZIP, and WIM.
解壓支持格式:7z, AR, ARJ, BZIP2, CAB, CHM, CPIO, CramFS, DEB, DMG, EXT, FAT, GPT, GZIP, HFS, HXS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RAR5, RPM, SquashFS, TAR, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR, XZ, Z, and ZIP
更多詳細(xì):https://github.com/rikyoz/bit7z
不建議使用此版本調(diào)用7-zip庫;

使用mscv 2017編譯器編譯

從https://github.com/rikyoz/bit7z下載源碼后解壓使用cMake默認(rèn)mscv2017直接可以編譯,選項(xiàng)直接默認(rèn)或者全選就行,然后再點(diǎn)擊 Configure-》generate;
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
編譯后生成以下目錄
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
此時(shí)需要返回bit7z-master原目錄添加lamz1900
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
下載lamz1900包:https://www.7-zip.org/a/lzma1900.7z
解壓lzma1900,將lzma1900中的文件復(fù)制到bit7z-master包下的third_party/7-zip文件夾中
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
打開編譯好的bit7z.sln文件修改設(shè)置bit7z為啟動(dòng)項(xiàng),修改屬性頁-》c/C++附件目錄中的庫文件目錄,然后右鍵重新生成,在生成目錄下找到生成好的bit7z.lib文件
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
通過這種方法生成lib庫,BitCompressor 類變成了一個(gè)模版類,調(diào)用方式參考github的后半段說明,比較繁瑣,源碼中展示的案例也貌似是付費(fèi)內(nèi)容,需要三方庫。
建議直接通過編譯下載Qt版本bit7z庫調(diào)用

參考借鑒文章

C++ 7z解壓縮編譯及使用
c++配置并使用bit7z加密壓縮或解壓7z文件
bit7z庫 :https://github.com/rikyoz/bit7z

下載bit7z(QT版本)

直接下載Qt版本的bit7z庫,能直接重新選擇編譯器生成Bit7z
主要是參考這篇文章:
qt5 7zip源碼編譯及使用(含展示進(jìn)度)
解壓后直接可以打開bit7z.pro ,
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
同時(shí)也需要把lzma1900中的文件放到7zsdk文件夾中,再選擇編譯器編譯就行。
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660

調(diào)用bit7z庫

以Qt版本源碼生成的bit7z庫為例,需要在項(xiàng)目pro文件中添加lib引用和include文件夾引用

///生成的lib庫地址
win32:CONFIG(release, debug|release): LIBS += -L$$DESTDIR/ -lbit7z
else:win32:CONFIG(debug, debug|release): LIBS += -L$$DESTDIR/ -lbit7zd

#include文件目錄所在 包括所有hpp頭文件
INCLUDEPATH += $$PWD/../bit7z
DEPENDPATH += $$PWD/../bit7z

注意調(diào)用時(shí)需要OleAut32.lib和User32.lib這兩個(gè)文件,

# 不加上-lOleAut32 -lUser32這段 bit7z無法解析 
LIBS += -L$$DESTDIR -lbit7z -lOleAut32 -lUser32

編譯時(shí)最好在bitformat.hpp文件中添加此宏定義,

//使用此宏定義調(diào)用時(shí)只需要使用 BitFormat::Auto
//不用再判斷文件類型
#define BIT7Z_AUTO_FORMAT

Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660

和bit7z.lib文件放在同一目錄下。
參考:
qt5 7zip源碼編譯及使用(含展示進(jìn)度)
https://gitcode.net/mirrors/rikyoz/Bit7z/-/tree/hotfix/v3.1.4

至于需要的7-zip庫:
7z.dll可以通過官網(wǎng):7-Zip -程序下載安裝后獲取。
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
7za.dll和7zxa.dll可以直接下載:https://www.7-zip.org/a/7z1900-extra.7z解壓獲取
建議7za.dll和7zxa.dll和7z.dll和執(zhí)行程序放同一目錄下
其中:
7z.dll應(yīng)該支持所有功能,而7za.dll應(yīng)該只支持7z文件格式,而7zxa.dll只能提取7z文件
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660

the 7z.dll should support all these features, while 7za.dll should support only the 7z file format and the 7zxa.dll can only extract 7z files. For more information about the 7-zip DLLs, please see this wiki page

編譯出現(xiàn)異??梢詤⒖?/strong>:[筆記] 編譯bit7z踩坑記錄

調(diào)用庫(hotfix/v3.1.4/示例)

解壓文件

#include "bitextractor.hpp"

using namespace  bit7z;

try {
    Bit7zLibrary lib{ L"7za.dll" };
    //啟用宏定義BIT7Z_AUTO_FORMAT后可以直接使用BitFormat::Auto
    BitExtractor extractor{ lib, BitFormat::SevenZip };

    extractor.extract( L"path/to/archive.7z", L"out/dir/" ); //extracting a simple archive

    extractor.extractMatching( L"path/to/arc.7z", L"file.pdf", L"out/dir/" ); //extracting a specific file

    //extracting the first file of an archive to a buffer
    std::vector< byte_t > buffer;
    extractor.extract( L"path/to/archive.7z", buffer );

    //extracting an encrypted archive
    extractor.setPassword( L"password" );
    extractor.extract( L"path/to/another/archive.7z", L"out/dir/" );
} catch ( const BitException& ex ) {
    //do something with ex.what()...
}

壓縮文件

#include "bitcompressor.hpp"

using namespace bit7z;

try {
    Bit7zLibrary lib{ L"7z.dll" };
    //啟用宏定義BIT7Z_AUTO_FORMAT后可以直接使用BitFormat::Auto
    BitCompressor compressor{ lib, BitFormat::Zip };

    std::vector< std::wstring > files = { L"path/to/file1.jpg", L"path/to/file2.pdf" };

    compressor.compress( files, L"output_archive.zip" ); //creating a simple zip archive

    //creating a zip archive with a custom directory structure
    std::map< std::wstring, std::wstring > files_map = { { L"path/to/file1.jpg", L"alias/path/file1.jpg" },
    { L"path/to/file2.pdf", L"alias/path/file2.pdf" } };
    compressor.compress( files_map, L"output_archive2.zip" );

    compressor.compressDirectory( L"dir/path/", L"dir_archive.zip" ); //compressing a directory

    //creating an encrypted zip archive of two files
    compressor.setPassword( L"password" );
    compressor.compressFiles( files, L"protected_archive.zip" );

    //updating an existing zip archive
    compressor.setUpdateMode( true );
    compressor.compressFiles( files, L"existing_archive.zip" );

    //compressing a single file into a buffer
    std::vector< byte_t > buffer;
    BitCompressor compressor2{ lib, BitFormat::BZip2 };
    compressor2.compressFile( files[0], buffer );
} catch ( const BitException& ex ) {
    //do something with ex.what()...
}

查看文件詳細(xì)

可以通過此方法直接預(yù)覽壓縮文件夾內(nèi)容

#include "bitarchiveinfo.hpp"

using namespace bit7z;

try {
    Bit7zLibrary lib{ L"7za.dll" };
    BitArchiveInfo arc{ lib, L"archive.7z", BitFormat::SevenZip };

    //printing archive metadata
    wcout << L"Archive properties" << endl;
    wcout << L" Items count: "   << arc.itemsCount() << endl;
    wcout << L" Folders count: " << arc.foldersCount() << endl;
    wcout << L" Files count: "   << arc.filesCount() << endl;
    wcout << L" Size: "          << arc.size() << endl;
    wcout << L" Packed size: "   << arc.packSize() << endl;
    wcout << endl;

    //printing archive items metadata
    wcout << L"Archive items";
    auto arc_items = arc.items();
    for ( auto& item : arc_items ) {
        wcout << endl;
        wcout << L" Item index: "   << item.index() << endl;
        wcout << L"  Name: "        << item.name() << endl;
        wcout << L"  Extension: "   << item.extension() << endl;
        wcout << L"  Path: "        << item.path() << endl;
        wcout << L"  IsDir: "       << item.isDir() << endl;
        wcout << L"  Size: "        << item.size() << endl;
        wcout << L"  Packed size: " << item.packSize() << endl;
    }
} catch ( const BitException& ex ) {
    //do something with ex.what()...
}

調(diào)用庫可執(zhí)行程序示例

Qt調(diào)用Bit7z庫接口調(diào)用7z.dll解壓壓縮常用Zip、ISO9660、Wim、7z等格式的可執(zhí)行程序,非源碼!Qt案例
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660
Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一),QT項(xiàng)目開發(fā)案例,qt,bit7z,iso9660文章來源地址http://www.zghlxwxcb.cn/news/detail-664920.html

到了這里,關(guān)于Qt 編譯使用Bit7z庫接口調(diào)用7z.dll、7-Zip.dll解壓壓縮常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Windows下QT Creator安裝MinGW 32bit編譯器

    Windows下QT Creator安裝MinGW 32bit編譯器

    ??注:本作者是基于FFmpeg開發(fā)需要,故在Windows下QT Creator中安裝MinGW 32bit編譯器!其它型號(hào)編譯器參照此文章基本可以實(shí)現(xiàn)! 1、下載鏈接 鏈接: 2、下載后的文件(Qt路徑下包含:5.12.0文件和Tools文件): 1、將:Qt/Tools/mingw730_32拷貝到QT Creator安裝路徑下的Tools文件下 2、將:

    2024年02月14日
    瀏覽(29)
  • 【Linux】解壓縮文件命令(7z、zip,tar等)

    壓縮文件: zip compressed.zip file1.txt file2.txt folder/ 解壓文件: unzip compressed.zip -d destination_folder/ 壓縮文件: 7z a compressed.7z file1.txt file2.txt folder/ 解壓文件: 7z x compressed.7z -odestination_folder/ 常用于對(duì)單個(gè)文件進(jìn)行壓縮,生成 .gz 后綴的壓縮文件。可以使用以下命令進(jìn)行壓縮和解壓

    2024年02月10日
    瀏覽(48)
  • Python實(shí)現(xiàn)rar、zip和7z文件的壓縮和解壓

    一、7z壓縮文件的壓縮和解壓 1、安裝py7zr 我們要先安裝 py7zr 第三方庫: 如果python環(huán)境有問題,執(zhí)行上面那一條安裝語句老是安裝在默認(rèn)的python環(huán)境的話,我們可以執(zhí)行下面這條語句,將第三方庫安裝在項(xiàng)目的虛擬環(huán)境中: 2、解壓7z文件 3、壓縮成7z文件 二、rar壓縮文件的壓

    2024年02月07日
    瀏覽(24)
  • [python]批量解壓文件夾下所有壓縮包(rar、zip、7z)

    [python]批量解壓文件夾下所有壓縮包(rar、zip、7z)

    ????????在文件夾作用包含許多壓縮包的時(shí)候,解壓起來就很費(fèi)時(shí)費(fèi)力,尤其是在文件夾還存在嵌套的情況下,解壓起來就更麻煩了。Franpper今天給大家?guī)磉f歸遍歷指定路徑下的所有文件和文件夾,批量解壓所有壓縮包的方法,幫大家一鍵解壓。 ? ? ? ? 常見的壓縮包格

    2024年02月09日
    瀏覽(28)
  • Qt動(dòng)態(tài)調(diào)用(外部調(diào)用)SDK庫(dll動(dòng)態(tài)庫)

    Qt動(dòng)態(tài)調(diào)用(外部調(diào)用)SDK庫(dll動(dòng)態(tài)庫)

    ??????? ?之前的文章,介紹了Qt調(diào)用sdk庫的方式,大家可以點(diǎn)擊查看(Q調(diào)用SDK庫(dll動(dòng)態(tài)庫))之前的文章,里面介紹的調(diào)用方式就是靜態(tài)的調(diào)用方式。如下圖所示,需要提供.h文件,dll文件和lib文件。 ?本篇文章主要實(shí)現(xiàn)通過一個(gè)dll文件,外部動(dòng)態(tài)調(diào)用的方式來調(diào)用我

    2024年02月09日
    瀏覽(20)
  • 詳述C++ 調(diào)用opencv編譯成dll并調(diào)用的全過程

    詳述C++ 調(diào)用opencv編譯成dll并調(diào)用的全過程

    ?其中,extern \\\"C\\\":告訴編譯器將被它修飾的代碼按C語言的方式進(jìn)行編譯。 ????????????__declspec(dllexport):告訴編譯器和鏈接器被它修飾的函數(shù)或變量需要從DLL導(dǎo)出,以供其他應(yīng)用程序使用;與其相對(duì)的還有一句代碼是__declspec(dllimport),此修飾符的作用是告訴編譯器和鏈接

    2024年02月04日
    瀏覽(29)
  • QT筆記——vs + qt 創(chuàng)建一個(gè)帶界面的 dll 和 調(diào)用帶界面的dll

    QT筆記——vs + qt 創(chuàng)建一個(gè)帶界面的 dll 和 調(diào)用帶界面的dll

    用VS + qt 生成dll 和 調(diào)用生成的dll 環(huán)境: vs 2019 + qt 5.12 創(chuàng)建dll 上一次我們是直接使用的qt 為我們提供方便的類庫創(chuàng)建 ,這次呢 我們自己寫類庫 第一步:創(chuàng)建一個(gè)QT應(yīng)用程序 第二步,修改程序?yàn)?生成dll 并且 我修改了生成的所在路徑 添加QT的模塊 ,自己用了什么,就添加什

    2024年02月03日
    瀏覽(29)
  • C# 運(yùn)用(codeDom和反射技術(shù))動(dòng)態(tài)編譯dll ,動(dòng)態(tài)調(diào)用

    ? ? ? 在軟件運(yùn)用工程中,往往會(huì)根據(jù)各種各樣,花樣百出的需求來設(shè)計(jì)軟件,在最近的項(xiàng)目中無意中,我就遇到了一個(gè)需求,據(jù)說是,客戶要?jiǎng)討B(tài)編譯dll ,我“滴個(gè)乖乖”,這是要逆天??! 話不多說,直接來點(diǎn)干貨。 簡(jiǎn)單分享一下個(gè)小demo: 1.運(yùn)用codeDom技術(shù)實(shí)現(xiàn)動(dòng)態(tài)程序集

    2024年02月13日
    瀏覽(23)
  • Qt6之vc調(diào)用qt生成的帶ui的dll

    Qt6之vc調(diào)用qt生成的帶ui的dll

    受益于跨平臺(tái)的特性,Qt生成dll的各種語言調(diào)用上體現(xiàn)的淋漓盡致,上篇已經(jīng)演示了qt生成的無ui的dll及vc如何調(diào)用它,本篇將演示vc如何調(diào)用qt生成的帶ui的dll。 傳統(tǒng)觀點(diǎn)認(rèn)為Qt生成的帶ui的dll受限于?QApplication 的 exec 方法,這樣才能產(chǎn)生消息循環(huán)于是只能采用QTWinmigrate中重寫

    2024年02月12日
    瀏覽(21)
  • 【QT】自定義工程封裝成DLL并如何調(diào)用(帶ui界面的)

    【QT】自定義工程封裝成DLL并如何調(diào)用(帶ui界面的)

    一、動(dòng)態(tài)庫的封裝 1、首先新建一個(gè)Library工程 2、修改類型為共享庫,自定義項(xiàng)目名稱以及項(xiàng)目路徑 3、選擇編譯器 4、選擇動(dòng)態(tài)庫所需要的模塊 5、自定義類名,點(diǎn)擊下一步 6、點(diǎn)擊下一步 7、項(xiàng)目總覽 8、此時(shí)的文件中還沒有ui文件,因?yàn)橐庋b帶界面的動(dòng)態(tài)庫,需要右鍵點(diǎn)擊

    2024年02月03日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包