Написал небольшую заметку в wiki по работе с zip архивами в Qt.
круто ) Одним головняком меньше, если что))
А они разве есть в Qt 4.7 ? Давно сий финт юзаю, помнится даже в 4.6.х какой-то уже не было.
ufna, я глянул щас - есть. У меня Qt 4.7.0
Видимо в какой-то из промежуточных косяк был, я из-за этого отказался от использования.
А как нужно правильно заинклудить хидеры qzipreader_p.h и qzipwriter_p.h?
Если писать так
#include qzipreader_p.h
#include qzipwriter_p.h
#include "/home/evgeny/qtsdk-2010.05/qt/include/QtGui/private/qzipreader_p.h"
#include "/home/evgeny/qtsdk-2010.05/qt/include/QtGui/private/qzipwriter_p.h"
INCLUDEPATH += . \
......
$${QTDIR}/src/3rdparty/zlib
Чисто свои по относительному пути:
#include "./MainWindow.h"
#include "./ErrorEnum.h"
#include <QDate>
#include <QFile>
#include <QLibrary>
#include <QDebug>
#include "../Zip/qzipreader_p.h"
#include "../Zip/qzipwriter_p.h"
Rocky, попробуй так
INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
Да, спасибо, помогло ))
В qt 4.8 qzip.cpp:420
const quint32 mode = (qFromLittleEndian<quint32>(&header.h.external_file_attributes[0]) >> 16) & 0xFFFF;
Winand, 3210==1000002 , поэтому неудивительно, что при сдвиге этого числа на 16 битов вправо получается 0
но дело вообще не в этом. А вот в этом:
const quint32 mode = (qFromLittleEndian<quint32>(&header.h.external_file_attributes[0]) >> 16) & 0xFFFF;
зачем берётся адрес
Вот использую кусок кода в точности такой же как в статье, но почему в архиве создаются (помимо самих файлов и папок) файлы размером 0 bytes с именем папок. Никто не знает, в чем причина?
А ни у кого не было проблемы при использования QZipReader?
./debug\XXXX.o:C:\projects\XXXX.cpp:410: undefined reference to `_imp___ZN10QZipReaderC1EP9QIODevice'
./debug\XXXX.o:C:\projects\XXXX.cpp:411: undefined reference to `_imp___ZNK10QZipReader8fileDataERK7QString'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\Exchange.exe] Error 1
mingw32-make: *** [debug] Error 2
15:55:20: The process "C:\projects\qtsdk\mingw\bin\mingw32-make.exe" exited with code 2.
файлы в проект не подключены
поищи в тырнете по строке ": undefined reference to `_imp___ZN10QZipReaderC1EP9QIODevice'"
к примеру, тут вот советуют
http://www.qtforum.org/article/23703/compilation-problem-undefined-reference-to-imp.html
QT += qt3support
./debug\XXXX.o:C:\projects\XXXX.cpp:410: undefined reference to `_imp___ZN10QZipReaderC1EP9QIODevice'
./debug\XXXX.o:C:\projects\XXXX.cpp:411: undefined reference to `_imp___ZNK10QZipReader8fileDataERK7QString'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'
./debug\XXXX.o:C:\projects\XXXX.cpp:424: undefined reference to `_imp___ZN10QZipReaderD1Ev'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\Exchange.exe] Error 1
mingw32-make: *** [debug] Error 2
15:55:20: The process "C:\projects\qtsdk\mingw\bin\mingw32-make.exe" exited with code 2.
QT += gui-private
#include <QtGui/private/qzipwriter_p.h>
#include <QtGui/private/qzipreader_p.h>
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)