Я бы хотел поддерживать совместимость между всеми другими приложениями на планете (включая веб-приложения) при сжатии текста.Так как qCompress и qUncompress, кажется, идут вразрез, я пытаюсь использовать zlib непосредственно из моего приложения Qt.
Я приму самый простой (самый минимальный) ответ, который показывает мне, как использовать библиотеку zlib снепосредственно QByteArray ИЛИ изменить вывод qCompress так, чтобы его можно было использовать вне приложения Qt.
Вот моя неловкая попытка:
QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray cdata;
uLongf len = 12 + 1.002*tdata.length();
compress(&cdata, &len, &tdata, tdata.length());
И ошибка:
ошибка: невозможно преобразовать 'QByteArray *' в 'Bytef *' для аргумента '1' в 'int compress (Bytef *, uLongf *, const Bytef *, uLong)'
Затем я попытался использовать QByteArray :: constData ()
compress(cdata.constData(), &len, &tdata, tdata.length());
Но получил следующую ошибку:
ошибка: недопустимое преобразование из 'const char *' в'Bytef *'
Я понятия не имею, что такое Bytef, поэтому я начинаю поискать в источниках zlib.Но все, что я могу найти для этого, находится в QtSources / src / 3rdparty / zlib / zconf.h
# define Bytef z_Bytef
Так что теперь я просто потерян.