2010-09-07 14 views
6

Sto provando a scrivere un piccolo lettore di fumetti multipiattaforma (Qt/C++). Non mi interessa cosa c'è già là fuori, so che ce ne sono alcuni.Come utilizzare il szk 7z per estrarre file rar/zip (C++)?

Il mio problema è che ho bisogno di leggere i formati di fumetti, che vengono rinominati rar e file zip.

La documentazione è molto ... inesistente? Non esiste alcun documento di "salve archivio". Come posso configurarlo?

se rende più facile da assumere Sono su qualsiasi sistema operativo particolare farlo. Sto passando tra Kubuntu, OSX e Win7 costantemente per il lavoro di sviluppo.

+0

"ciao archivio": D – foraidt

+0

http://quazip.sourceforge.net/ –

risposta

3

7z dovrebbe in realtà venire con entrambe le sorgenti per una variante della riga di comando e una variante della GUI, è possibile scavare in quelle e vedere come fanno la compressione, altrimenti si potrebbe usare unRar e vedere se questo ha qualche esempio (sfortunatamente posso controllare se il download è bloccato dove sono).


Frugando intorno al LMZA SDK un po 'mi sono imbattuto in questo:

ANSI-C LZMA Decoder

~~~~~~~~~~~~~~~~ ~~~

Si noti che le interfacce per il codice ANSI-C sono state modificate in LZMA SDK 4.58. Se si desidera utilizzare vecchie interfacce è possibile scaricare versione precedente di LZMA SDK dal sito sourceforge.net.

Per utilizzare ANSI-C LZMA Decoder è necessario i seguenti file: 1) LzmaDec.h + LzmaDec.c + types.h

LzmaUtil/LzmaUtil.c è esempio applicazione che utilizza questi file.

4

Ho lavorato su un semplice wrapper C++ per l'SDK 7zip, che è possibile trovare here. Attualmente supporta solo Windows e le esigenze specifiche che ho avuto, ma sarei felice di apportare alcune modifiche e/o accettare contributi. Può estrarre i file 7zip e Zip in poche righe di codice, utilizzando 7z.dll. RAR non dovrebbe essere difficile da aggiungere poiché la DLL lo supporta.

+0

Sapete come risolvere questo: 'C1900 errore fatale: Il divario tra 'P1' versione '20.100.826' e ' Errore di P2 'versione' 20070207' su SevenZip ++? – Rookie

+0

Ho paura di non conoscere questo errore, ma con un po 'di googling sembra che potrebbe esserci un problema con l'installazione di Visual Studio. – Chadwick

0

Provare QArchive, si avvolge intorno a libarchive per fornire API Qt C++ non bloccanti. QArchive è una libreria di helper C++ Cross-Platform che Modernizes libarchive utilizza Qt5. Estrae semplicemente 7z, Zip, Tarballs, RAR e altri formati supportati da libarchive.

andare al repository per ulteriori informazioni e documentazione!

Per estrarre qualsiasi archivio!

#include <QCoreApplication> 
#include <QDebug> 
#include "QArchive.hpp" 

int main(int argc , char** argv){ 
    QCoreApplication app(argc , argv); 
    QArchive::Extractor Archiver("somefile.zip"); 

    // connect callback 
    QObject::connect(&Archiver , QArchiver::Extractor::extracted , [&](QString file) 
    { 
      qDebug() << "extracted :: " << file; 
      app.quit(); 
    }); 

    // Start Extraction 
    Archiver.start(); // never use run 

    qDebug() << "This is non-blocking!"; 

return app.exec(); 
} 
Problemi correlati