Qt は Quazip ライブラリを使用してコンパイルします

1.zlibをコンパイルする

quazip ライブラリは、zlib ライブラリをカプセル化する Qt ベースの圧縮および解凍ライブラリです。したがって、quazip ライブラリを使用するには、まず zlib をコンパイルする必要があります。

zlib をダウンロードします

Qt で使用するために、コンパイル環境は Qt の MinGW ツール チェーンを一律に使用します。
ソース コードを解凍し、Qt の MinGW コマンド ライン コンソールを開きます。

make -f ./win32/Makefile.gcc

ここに画像の説明を挿入

zconf.hzlib.h、および予備をコピーしますzlib1.dll

ここに画像の説明を挿入

2.quazipをコンパイルする

ここまでやるのに半日かかりました。オンライン チュートリアルはすべて古いバージョンで、.proqmake コンパイル ファイルを使用します。最新バージョンでは、コンパイルに 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、デバッグして実行します。プログラムは正常に起動できますが、そうでない場合は、プログラムが起動および終了する直接の原因となります。

実行後、圧縮は成功します。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/duapple/article/details/131117426