QT解凍zlibとquazipの使用
2332 ワード
まず私の開発環境はwindows 10、qtvs 2015、vs 2015です.
一、zlibのコンパイル
1、公式サイトは最新のzlibソースをダウンロードして、最新のは1.2です.8
2、vsが持つコマンドラインツール(32ビットのdllをコンパイルx 86、64ビットのx 64)でzlibルートディレクトリに入り、nmake-f win 32/Makefile.mscを実行し、ルートディレクトリの下で:zlib.lib(静的ライブラリ)zdllを生成する.lib(ダイナミックライブラリのインポートライブラリ)zlib 1.dll(ダイナミックライブラリ).必要なヘッダファイルはzlib.hとzconf.h.
二、quazipのコンパイル
1、quazipはzlibのパッケージライブラリで、ソースコードをダウンロードしてQTで開く.コンパイルにはzlibライブラリに依存する必要がある.右クリック項目にライブラリを追加して外部ライブラリを選択すればよい.追加後Proファイルの末尾には以下の構成が生成されます.64ビットのquazipをコンパイルするには、zlibも64ビットでなければなりません.
INCLUDEPATHはヘッダファイルパス
2、右クリックプロジェクトの構築はquazipを生成する.libとquazip.dll、zlibとquazipのデフォルト文字セットはすべてANSIであることに注意して、呼び出すファイルの文字セットもANSIでなければならなくて、さもなくばコンパイルしますが、utf-8を使うならば、すべてutf-8でなければなりません.
三、使用
1、使用時に外部ライブラリzlibとquazipを追加する必要があります.文字セットはdllと同じで、次は解凍コードです.
2、構築運行、新版QT運行はqtvs 2015下のplugins下のplatformsフォルダをdebug或いはreleaseの中で運行する必要があり、zlib 1も必要である.dllとquazip.dllは生成されたexe兄弟ディレクトリの下に配置されます.運転が反応しなければファイアウォールと殺毒をチェックします.
一、zlibのコンパイル
1、公式サイトは最新のzlibソースをダウンロードして、最新のは1.2です.8
2、vsが持つコマンドラインツール(32ビットのdllをコンパイルx 86、64ビットのx 64)でzlibルートディレクトリに入り、nmake-f win 32/Makefile.mscを実行し、ルートディレクトリの下で:zlib.lib(静的ライブラリ)zdllを生成する.lib(ダイナミックライブラリのインポートライブラリ)zlib 1.dll(ダイナミックライブラリ).必要なヘッダファイルはzlib.hとzconf.h.
二、quazipのコンパイル
1、quazipはzlibのパッケージライブラリで、ソースコードをダウンロードしてQTで開く.コンパイルにはzlibライブラリに依存する必要がある.右クリック項目にライブラリを追加して外部ライブラリを選択すればよい.追加後Proファイルの末尾には以下の構成が生成されます.64ビットのquazipをコンパイルするには、zlibも64ビットでなければなりません.
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../zlib64/ -lzdll
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../zlib64/ -lzdll
else:unix: LIBS += -L$$PWD/../zlib64/ -lzdll
INCLUDEPATH += $$PWD/../zlib64
DEPENDPATH += $$PWD/../zlib64
INCLUDEPATHはヘッダファイルパス
2、右クリックプロジェクトの構築はquazipを生成する.libとquazip.dll、zlibとquazipのデフォルト文字セットはすべてANSIであることに注意して、呼び出すファイルの文字セットもANSIでなければならなくて、さもなくばコンパイルしますが、utf-8を使うならば、すべてutf-8でなければなりません.
三、使用
1、使用時に外部ライブラリzlibとquazipを追加する必要があります.文字セットはdllと同じで、次は解凍コードです.
bool extract(const QString& in_file_path, const QString& out_file_path)
{
QuaZip archive(in_file_path);
if (!archive.open(QuaZip::mdUnzip))
return false;
QString path = out_file_path;
if (!path.endsWith("/") && !out_file_path.endsWith("\\"))
path += "/";
QDir dir(out_file_path);
if (!dir.exists())
dir.mkpath(out_file_path);
for( bool f = archive.goToFirstFile(); f; f = archive.goToNextFile() )
{
QString filePath = archive.getCurrentFileName();
QuaZipFile zFile(archive.getZipName(), filePath);
zFile.open(QIODevice::ReadOnly );
QByteArray ba = zFile.readAll();
zFile.close();
if (filePath.endsWith("/"))
{
dir.mkpath(filePath);
}
else
{
QFile dstFile(path + filePath);
if (!dstFile.open(QIODevice::WriteOnly))
return false;
dstFile.write(ba);
dstFile.close();
}
}
return true;
}
2、構築運行、新版QT運行はqtvs 2015下のplugins下のplatformsフォルダをdebug或いはreleaseの中で運行する必要があり、zlib 1も必要である.dllとquazip.dllは生成されたexe兄弟ディレクトリの下に配置されます.運転が反応しなければファイアウォールと殺毒をチェックします.