3

QT4.7.3、VS2008 を使用しており、QuaZip ライブラリを追加しようとしています。

QuaZip、Zlib を入手してコンパイルすると、「quazip.lib」ファイルを作成できます。

「プロジェクト プロパティ -> 構成プロパティ -> リンカー -> 入力 -> 追加の依存関係」に quazip.lib を追加し、パスを含めます。

以下のようにソースコードを書きました。

#include "Updater.h"
#include "quazip.h"

Updater::Updater(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);

    QuaZip *qZip = new QuaZip();
}

しかし、ここで、私は問題に行き詰まりました。

エラーメッセージは以下のように表示されます。

Updater.obj : エラー LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: _ thiscall QuaZip::QuaZip(void)" ( _imp_??0QuaZip@@QAE@XZ) 関数 "public: __thiscall Updater::Updater( class QWidget *,class QFlags)" (??0Updater@@QAE@PAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z) 1>.\updater.exe : 致命的なエラー LNK1120: 1 つの未解決の外部

このエラーは、宣言が存在するが定義が存在しない場合に発生することを知っています。

find QuaZip コンストラクターを検索した結果、以下のようになりました。

QuaZip::QuaZip():
  p(new QuaZipPrivate(this))
{
}

どうすれば正しくできますか?

コメントありがとうございます。

4

1 に答える 1

3

Quazip の README ファイルで次のメッセージを見つけました。

プロジェクトに直接 QuaZIP ソースを含めたい場合、または "qmake CONFIG+=statliclib" を使用して静的ライブラリとしてコンパイルされた QuaZIP を使用したい場合は、QUAZIP_STATIC マクロを定義する必要があります。そうしないと、QuaZIP として問題が発生する可能性があります。シンボルは dllimported としてマークされます。

多分それはあなたを助けるでしょう。

于 2012-08-06T13:03:42.473 に答える