0

GetValueなどの関数を使用してQtに基づいて動的ライブラリを作成する必要があります。この関数は、QLineEditを使用してダイアログを呼び出し、入力値を返す必要があります。Qtクラスなしで構造を作成しました。ソースコードは正常にコンパイルされ、dllを取得しました。

しかし、Qtオブジェクトを追加すると、次のようなリンケージエラーが発生します。

guilib2.obj:エラーLNK2019:未解決の外部シンボル "__declspec(dllimport)public:virtual _ thiscall QApplication ::〜QApplication(void)"( _imp _ ?? 1QApplication @@ UAE @ XZ)関数 "void __cdecl GetValue(void)で参照"(?getValue @@ YAXXZ)

guilib2.obj:エラーLNK2019:未解決の外部シンボル "__declspec(dllimport)public:__thiscall QApplication :: QApplication(int&、char * *、int)"(_ imp ?? 0QApplication @@ QAE @ AAHPAPADH @ Z)関数で参照"void __cdecl GetValue(void)"(?GetValue @@ YAXXZ)

この問題を解決する方法は?

以下のソースコード:

guilib2.h

  #ifndef GUILIB2_H
  #define GUILIB2_H

  #include "GUILib2_global.h"

  GUILIB2SHARED_EXPORT void GetValue();

  #endif // GUILIB2_H

GUILib2_Global.h

  #ifndef GUILIB2_GLOBAL_H
  #define GUILIB2_GLOBAL_H

  #include <QtCore/qglobal.h>

  #if defined(GUILIB2_LIBRARY)
  #  define GUILIB2SHARED_EXPORT Q_DECL_EXPORT
  #else
  #  define GUILIB2SHARED_EXPORT Q_DECL_IMPORT
  #endif

  #endif // GUILIB2_GLOBAL_H

guilib2.cpp

  #include "guilib2.h"
  #include <QtGui>
  #include <QtWidgets/QApplication>


  void GetValue()
  {
      int argc =1;
      char *argv[1];
      argv[0]="guilib2.dll";
      QApplication a(argc,argv);
  }

GUILib2.pro

  TARGET = GUILib2
  TEMPLATE = lib
  QT += gui
  DEFINES += GUILIB2_LIBRARY

  SOURCES += guilib2.cpp

  HEADERS += guilib2.h\
          GUILib2_global.h
4

1 に答える 1

1

.pro ファイルに次のステートメントを追加する必要があります。

QT += widgets
于 2015-05-05T01:52:55.980 に答える