C++ Can';t获取库上的枚举(未定义的引用staticMetaObject)

C++ Can';t获取库上的枚举(未定义的引用staticMetaObject),c++,qt,enums,shared-libraries,C++,Qt,Enums,Shared Libraries,我有一个使用Qt库(共享库)的应用程序。在我的库中,我有一个包含几个枚举的类,我希望在主应用程序上使用这些枚举。 我构建我的库项目没有问题,但在构建主应用程序项目时,我遇到了错误: moc_myapp.cpp:-1: erreur : undefined reference to `MyClass::staticMetaObject' 我没有找到有关此错误的信息 这是我的藏书 QT -= gui QT += quick multimedia network TARGET = M

我有一个使用Qt库(共享库)的应用程序。在我的库中,我有一个包含几个枚举的类,我希望在主应用程序上使用这些枚举。 我构建我的库项目没有问题,但在构建主应用程序项目时,我遇到了错误:

moc_myapp.cpp:-1: erreur : undefined reference to `MyClass::staticMetaObject'
我没有找到有关此错误的信息

这是我的藏书

QT       -= gui

QT += quick multimedia network

TARGET = MyBiblio
TEMPLATE = lib

DEFINES += MYBIBLIO_LIBRARY

SOURCES += myBiblio.cpp 
HEADERS += myBiblio.h\
        myBiblio_global.h \
        myClass.h
这是myClass.h:

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QObject>

class MyClass : public QObject
{
    Q_OBJECT
public:
    enum MyEnumeration {Enum1, Enum2, Enum3};
    Q_ENUMS(MyEnumeration)
};
#endif // MYCLASS_H
在myapp.cpp上,我使用库的枚举定义:

MyClass::MyEnumeration
我包括“myclass.h”

我在Windows下使用Qt5.2


感谢您的帮助

在创建要链接的共享库时,您需要确保在创建库时正确导出库外部使用的符号。然后在链接库时导入。可以使用
Q_DECL_导出
Q_DECL_导入

您的lib pro中已经有以下定义:

DEFINES += MYBIBLIO_LIBRARY
修改myClass.h,如下所示:

#if defined MYBIBLIO_LIBRARY
 #define MYBIBLIO_LIBRARY_DLLSPEC Q_DECL_EXPORT
#else
 #define MYBIBLIO_LIBRARY_DLLSPEC Q_DECL_IMPORT
#endif

class MYBIBLIO_LIBRARY_DLLSPEC MyClass : public QObject
{

有关详细信息,请阅读。

共享库不需要在Windows上导出/导入符号吗?
#if defined MYBIBLIO_LIBRARY
 #define MYBIBLIO_LIBRARY_DLLSPEC Q_DECL_EXPORT
#else
 #define MYBIBLIO_LIBRARY_DLLSPEC Q_DECL_IMPORT
#endif

class MYBIBLIO_LIBRARY_DLLSPEC MyClass : public QObject
{