Qtアプリケーション(qtapp)のいくつかの機能をテストするために、Qtアプリケーションをlib/dllライブラリとしてビルドします。 ctorとdtorは正しくライブラリにエクスポートされています。しかし、テストプロジェクト(consoleTestという名前のQtコンソールプロジェクト)は常に次のリンクエラーに実行されているコンパイル:Qtアプリケーションを参照するには?
リンク: 1>図書館「C:\ Users \ユーザーGmbH社\テスト\ x64の\デバッグ\ consoleTestが。 lib "および" Objekt "C:¥Users¥gmbh¥test¥x64¥Debug¥consoleTest.exp" werden erstellt 1> moc_testFour.obj:エラーLNK2001:Nichtaufgelöstesexternesシンボル "public:static struct QMetaObject const qtapp :: staticMetaObject "静的な構造体QMetaObject const qtapp :: staticMetaObject"(?staticMetaObject @ qtapp @@ 2UQMetaObject());} @B)」。 1> C:\ Users \ gmbh \ test \ x64 \ Debug \ consoleTest.exe:致命的なエラーLN K1120:1 NICHTaufgelösteExterne
Qtアプリケーションは非常に簡単です:
#ifndef QTAPP_H
#define QTAPP_H
#include <QtWidgets/QMainWindow>
#include "ui_qtapp.h"
class __declspec(dllexport) qtapp : public QMainWindow
{
Q_OBJECT
public:
qtapp(QWidget* parent = 0);
~qtapp();
private:
Ui::qtappClass ui;
};
#endif // QTAPP_H
は、インプリメンテーション:
#include "qtapp.h"
__declspec(dllexport) qtapp::qtapp(QWidget* parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
__declspec(dllexport) qtapp::~qtapp()
{
}
私は単にテストプロジェクトで#include "qtapp.h"
が含まれている場合、コンパイラは上記を生み出しますエラー。
私の質問:
- エラーの原因は何ですか?
- Qt アプリケーションをlibとして正しく展開するにはどうすればよいですか?
私のコンパイラは、Visual Studio 2013は、Qtは実際にはQtの独立した質問です5.4.2
あなたは私の目的を理解していないと思います。上記のqtappは実際にはダミープロジェクトです。私の最終的な目標は、私のQtアプリケーションでいくつかの機能をテストすることです。そのレートでQtアプリケーションを最初に**エクスポートする必要があります。これは後で私のテストプロジェクトで**インポート**され、必要なdll関数が呼び出され、検証されます。 – euroswenwickler
サンプルコードでは、テストプロジェクトに 'qtapp.h'をインクルードすると' __declspec(dllimport) 'の代わりに間違った' __declspec(dllexport) 'が表示されます。より完全な例がなければ、他に何が間違っているのかわかりません;) – E4z9