1.zlibをコンパイルする
quazip ライブラリは、zlib ライブラリをカプセル化する Qt ベースの圧縮および解凍ライブラリです。したがって、quazip ライブラリを使用するには、まず zlib をコンパイルする必要があります。
Qt で使用するために、コンパイル環境は Qt の MinGW ツール チェーンを一律に使用します。
ソース コードを解凍し、Qt の MinGW コマンド ライン コンソールを開きます。
make -f ./win32/Makefile.gcc
zconf.h
、zlib.h
、および予備をコピーしますzlib1.dll
。
2.quazipをコンパイルする
ここまでやるのに半日かかりました。オンライン チュートリアルはすべて古いバージョンで、.pro
qmake コンパイル ファイルを使用します。最新バージョンでは、コンパイルに qmake を使用しません。以前にコマンドの実行時にエラーが発生したため、CMakeLists.txt ファイルの内容が置き換えられ、コンパイルは成功しませんでした。ファイルの内容が置き換えられた後も、プロジェクト全体は引き続きコンパイルされますが、実行可能ファイルもコンパイルされます。ただし、一部の環境設定が不足しているため、リンク時に Qt および関連ライブラリが見つかりません。その後、コンパイルが成功する前に、ソース コード ファイルが再度解凍されました。
ホームページにコンパイルのチュートリアルがあります。非常に簡単で、コマンドを 2 つだけ行うだけなので、間違って多くの時間を無駄にしてしまいました。必ず Qt の MinGW ツールチェーンを使用してください。msys2 や自分でインストールしたコンパイル ツールチェーンは使用しないでください。そうしないと、コンパイルに失敗します。さらに、msys2 を使用する代わりに Windows バージョンの cmake をインストールすることをお勧めします。
ソース コードを解凍し、ソース コード ディレクトリに移動します。次に、ゲートウェイのホームページのチュートリアルに従って、ローカライズされた変更と実行を実行します。
mkdir build; cd build
cmake -S ../ -B ./ -D QUAZIP_QT_MAJOR_VERSION=5 -G "MinGW Makefiles"
コマンドの実行でエラーが報告されました。cmake は zlib ライブラリを見つけます。ただし、zlib は cmake の検索パスにないため、zlib を見つけることができず、エラーが報告されます。上記の zlib は cmake を使用してコンパイルされていないため、ここでは、quazip で CMakeLists.txt ファイルを変更してこの問題を保護し、zlib 検索パスを追加します。
ソース ディレクトリ CMakeLists.txt 内の zlib の検索に関連するコマンドをコメント アウトします。
次に、quazip
ディレクトリ内の CMakeLists.txt を変更して、zlib ライブラリを直接追加します。
link_directories("D:\\library\\lib_zlib\\lib")
add_library(${
QUAZIP_LIB_TARGET_NAME} ${
QUAZIP_SOURCES})
add_library(QuaZip::QuaZip ALIAS ${
QUAZIP_LIB_TARGET_NAME})
target_link_libraries(${
QUAZIP_LIB_TARGET_NAME} zlib1.dll)
再度生成されましたが、依然としてエラーが報告されています。Bzip2はダウンロードできません。
再試行してもダウンロードできませんが、エラーは報告されません。
何も問題がないので、無視して直接コンパイルします。
cmake --build . -j20
ダイナミック ライブラリが正常に生成されました。この先には問題がありますが。bzip2 をダウンロードできないという以前の問題については、手動でダウンロードしてコンパイルすることができます。ここでは気にしません。ここにダイナミックライブラリとヘッダーファイルがあります
libquazip1-qt5.dll
後で使用できるように、すべてのヘッダー ファイルをコピーします。
3. Qtプロジェクトに追加
関連するコードをプロジェクトに追加します。
#include "mainwindow.h"
#include <QApplication>
#include <libquazip/include/JlCompress.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
JlCompress::compressDir("D:\\library\\zlib.zip", "D:\\library\\lib_zlib");
return a.exec();
}
ファイルにヘッダー ファイルのパスとダイナミック ライブラリを追加し.pro
、前に生成したライブラリ ファイルのパスを追加します。ここでは quazip ライブラリを追加するだけです。
LIBS += -L$$PWD/libquazip/ -lquazip1-qt5
INCLUDEPATH += $$PWD/libquazip
その後コンパイルしても問題ありません。ただし、実行すると、ダイナミック ライブラリが見つからないため、直接ハングアップします。ここではダイナミック リンクのみをサポートしているため、前のコンパイルで生成された 2 つのダイナミック ライブラリ ファイルを実行ディレクトリに置く必要があります。Qt Creator のデバッグ実行ディレクトリも同様ですbuild-Onekey_Pi-Desktop_Qt_5_12_12_MinGW_32_bit-Debug
。
zlib1.dll
このディレクトリに 1と2 つの動的ライブラリを配置しlibquazip1-qt5.dll
、デバッグして実行します。プログラムは正常に起動できますが、そうでない場合は、プログラムが起動および終了する直接の原因となります。
実行後、圧縮は成功します。