Freie Unzip-Lib
-
Hi,
sorry, aber ich suche jetzt schon stundenlang nach einer frei verwendbaren Unzip-Lib für C++.
Ich will nicht viel mehr als einfach das, was ich in einer ZIP habe, dekomprimieren und auf dem Dateisystem abspeichern. Doch fast alles, was ich gefunden habe, erfordert noch zlib, was bei mir einfach nicht funktionieren will, oder benötigt MFC... und ständig habe ich char-Fehler, weil die nicht konsequent LPCTSTR nutzen, sondern ständig zwischen char, TCHAR, WCHAR hin- und herspringen und man tausend komische Konvertierungen machen muss.
Das muss doch einfacher gehen?
Gerne kann das kompatibel zu QT sein. Aber nicht unter GNU-GPL; ich habe closed source und vertreibe den auch noch. Was nutzt ihr denn so?
Danke für alle Ideen...
-
auf zlib wirst du wohl kaum verzichten können. AFAIK verwendet fast jede zip lib zlib zum dekomprimieren.
Denn zlib implementiert den kompressionsalgorithmus, welcher in Zip archiven verwendet wird.
-
Okay. Aber ich habe hier so eine Lib gefunden, die zlib nutzt, die Dateien auch selbst mitliefert, dann aber meckert, dass libc.lib nicht geöffnet werden kann...
Edit: Nach dem, was ich daraufhin gelesen hab, scheint die LIB dann unbrauchbar zu sein -.-
Edit2: Na ja, eigentlich ist ZLIB schon auch okay, wenn man Mal die richtige Version findet...
Edit3: Okay, klappt! Ich habe http://www.codeproject.com/Articles/4288/Win32-Wrapper-classes-for-Gilles-Volant-s-Zip-Unzi genutzt, dann aber nicht gegen die lib dort gelinkt sondern gegen die vom Windows-Build von zlib selbst. In der Kombination funktioniert es.
Sobald ich hier poste, löse ich Dinge immer recht schnell... das Forum hat auch indirekt viel positiven Einfluss! Danke!!
-
Unter Qt: QByteArray, qCompress, QUncompress.
EDIT:
So in etwa sollte es funktionieren:QFile infile(zipfilename); QFile outfile(filename); infile.open(QIODevice::ReadOnly); outfile.open(QIODevice::WriteOnly); QByteArray uncompressedData = infile.readAll(); QByteArray compressedData = qUncompress(uncompressedData); outfile.write(compressedData); infile.close(); outfile.close();
-
Kóyaánasqatsi schrieb:
Unter Qt: QByteArray, qCompress, QUncompress.
EDIT:
So in etwa sollte es funktionieren:QFile infile(zipfilename); QFile outfile(filename); infile.open(QIODevice::ReadOnly); outfile.open(QIODevice::WriteOnly); QByteArray uncompressedData = infile.readAll(); QByteArray compressedData = qUncompress(uncompressedData); outfile.write(compressedData); infile.close(); outfile.close();Dir ist schon klar dass du hier 1. die Namen "uncompressedData" und "compressedData" falsch rum vergeben hast, und du damit 2. kein .zip File entpackt bekommen wirst. Bzw. auch kein anderes Archiv-File.