我正在編寫一個從QObject派生的類,我想將該類導出到DLL文件中,以便其他應用程序可以使用它。但我得到了一些神祕問題就在這裏:將基於QObject的類導出到DLL
的代碼如下所示:
mydll.h:
#ifndef MYDLL_H
#define MYDLL_H
#include "mydll_global.h"
#include <QObject>
#include <QDebug>
class MYDLLSHARED_EXPORT MyDll : public QObject
{
Q_OBJECT
public:
explicit MyDll(QObject * parent = 0);
void test() const;
};
#endif // MYDLL_H
mydll_global.h:
#ifndef MYDLL_GLOBAL_H
#define MYDLL_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(MYDLL_LIBRARY)
# define MYDLLSHARED_EXPORT Q_DECL_EXPORT
#else
# define MYDLLSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // MYDLL_GLOBAL_H
mydll.cpp:
#include "mydll.h"
MyDll::MyDll(QObject * parent) :
QObject(parent)
{
}
void MyDll::test() const {
qDebug() << "Hello from dll!";
}
和dll i在另一個應用程序中使用。該DLL編譯成功。我已經在使用此DLL的應用程序的.pro
文件中添加LIBS += "myDll.dll"
,並且我已將myDll.dll
複製到應用程序的工作目錄中。
編譯報道:
C4273: "MyDll::qt_static_metacall" : inconsistent dll linkage.
C2491: "MyDll::staticMetaObject": definition of dllimport static data member not allowed
這裏有什麼問題嗎?
[dllimport靜態數據成員的C++定義]的可能的重複(http://stackoverflow.com/questions/3491990/c-definition-of-dllimport-static-data-member) – sashoalm