Bonjour!
J'ai un soucis d'utilisation avec la zlib. Je tourne sur google depuis un certain temps mais plus ca va et moins mon programme marche
Je possède un zip contenant des milliers de fichiers et documents et j'aimerai lui ajouter des fichiers dans des documents précis, si possible sans avoir a tout dezipper/rezipper a chaque fois que j'en ajoute.
Apres quelques recherches et une aideJ'ai fini par opter pour la zlib et plus précisément la minizip qui, si j'ai bien compris, contient le genre de fonction dont j'ai besoin.
J'ai trouve sur le web un post expliquant qu'une fonction faisait ce que j'attendais dans minizip/minizip.c.
J'ai donc inclus dans mon programme ce fichier (je travaille sous Qt, Windows 7) mais il possède déjà un main. Du coup j'ai fini par trouver des fichiers nommes:
- unzip.h/unzip.c, zip.h/zip.c.
j'ai donc ajoute ces fichiers a mon programme mais j'obtiens des milliers d'erreurs (comme pour l'ajout de minizip.c). Et quoique je fasse ces erreurs persistent.
La plupart des erreurs sont:
undefined reference to `call_zseek64' sur beaucoup de fonction nommes
ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END)
Mais le probleme, c'est que quand j'ajoute cette ligne:
#define ZSEEK64(filefunc,filestream,pos,mode) ((*((filefunc).zseek64_file)) ((filefunc).opaque,filestream,pos,mode))
que j'ai trouve sur http://www.sfr-fresh.com/unix/misc/z...inizip/ioapi.h j'obtiens cette nouvelle erreur:
redefinition of ZSEEK64.
En fait, je suis carrément perdu dans cette libraire deet je ne comprend ni comment l'utiliser ni comment elle marche malgré les différents tuto que j'ai pu voir sur le net.
Un grand Merci pour le cas ou vous pourriez m'éclairer la dessus!
Edit:
J'ai fouille un peu la dessus aussi:
http://www.gzip.org/zlib/manual.html#gzopen
Mais je n'arrive pas a ouvrir un zip ni a lire ce qu'il contient.
Voila le code que j'ai produit:
Mon fichier test.zip contient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include "zlib.h" [...] void test::test() { gzFile gzfh = NULL; char buffer[1024]; if ((gzfh = gzopen("../zip/test.zip", "rb")) == NULL) exit(-3); if (gzread(gzfh, buffer, 1024) == -1) exit(-4); this->test = new QPushButton(buffer); this->test->show(); gzclose(gzfh); }
et l'affichage qui s'ensuit:
![]()
Partager