2013-01-02 90 views
0

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

但是,当我加入Qt的对象,我得到链接错误是这样的:

guilib2.obj:错误LNK2019:无法解析的外部符号“__declspec(dllimport的)市民:虚拟_ thiscall的QApplication ::〜QApplication的(无效) “( _imp _ ?? 1QApplication @@ @ UAE XZ)在函数引用 ”空隙__cdecl的GetValue(无效)“(的GetValue @@ YAXXZ)

guilib2.obj:错误LNK2019:解析外部符号” __declspec(dllimport的)public:__thiscall QApplication :: QApplication(int &,char * *,int)“(_ imp? (void)__cdecl GetValue(void)“(?GetValue @@ YAXXZ)中引用的?0QApplication @@ QAE @ AAHPAPADH @ Z)

如何解决这个问题?

源下面的代码:

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

你应该在你的.pro文件中添加以下语句:

QT += widgets 
相关问题