Я хотел бы поддерживать взаимодействие между всеми другими приложениями на планете (включая веб-приложения) при сжатии текста. Поскольку 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
Так что теперь я просто потерялся.