【问题标题】:Qt use QApplication in libraryQt 在库中使用 QApplication
【发布时间】:2013-01-02 19:17:15
【问题描述】:

我需要基于 Qt 创建具有某些功能的动态库,例如 GetValue。 此函数应使用 QLineEdit 调用对话框并返回输入值。 我创建了没有 Qt 类的结构。源代码编译成功,我得到了dll。

但是当我添加 Qt 对象时,我得到如下链接错误:

guilib2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual _thiscall QApplication::~QApplication(void)" (_imp_??1QApplication@@UAE @XZ) 在函数“void __cdecl GetValue(void)”中引用 (?GetValue@@YAXXZ)

guilib2.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (_imp??0QApplication@函数“void __cdecl GetValue(void)”中引用的@QAE@AAHPAPADH@Z) (?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

【问题讨论】:

    标签: qt


    【解决方案1】:

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

    QT += widgets
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2020-06-23
      • 2015-08-15
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多