Qt在库中使用QApplication

时间:2013-01-02 19:17:16

标签: qt

我需要使用一些函数创建基于Qt的dinamic库,例如GetValue。 此函数应调用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

1 个答案:

答案 0 :(得分:1)

您应该在.pro文件中添加此语句:

QT += widgets