Metin sıkıştırırken, gezegendeki diğer tüm uygulamalar (web uygulamaları dahil) arasında birlikte çalışabilirlik sağlamak istiyorum. QCompress ve qUncompress tahıllara karşı gözüktüğü için zlib'i doğrudan Qt uygulamasından kullanmaya çalışıyorum.Nasıl zlib bir QByteArray sıkıştırılır?
bana nasıl bir Qt uygulamasının dışında kullanılması, böylece YA qCompress çıktısını değiştirmek doğrudan QByteArray ile zlib kütüphanesini kullanmak gösterir basit (en az) cevabı kabul edecek.
QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray cdata;
uLongf len = 12 + 1.002*tdata.length();
compress(&cdata, &len, &tdata, tdata.length());
Ve hata:
Sonraerror: cannot convert 'QByteArray*' to 'Bytef*' for argument '1' to 'int compress(Bytef*, uLongf*, const Bytef*, uLong)'
Ben QByteArray :: constData()
compress(cdata.constData(), &len, &tdata, tdata.length());
kullanarak çalıştı Ama şu hata var
İşte benim utanç verici girişimi var:
error: invalid conversion from 'const char*' to 'Bytef*'
Bytef'ın ne olduğu hakkında hiçbir fikrim yok, dolayısıyla araştırmak için zlib kaynaklarına bakmaya başladım. Ama bunun için bulabilirsiniz tüm QtSources/src olduğu/3.taraf/zlib/zconf.h
# define Bytef z_Bytef
Yani şimdi ben sadece kayboldum.
Eğer Boost iostreams kullanabilirsiniz: Bir zlib filtresi – akappa