C++ Can';t获取库上的枚举(未定义的引用staticMetaObject)
我有一个使用Qt库(共享库)的应用程序。在我的库中,我有一个包含几个枚举的类,我希望在主应用程序上使用这些枚举。 我构建我的库项目没有问题,但在构建主应用程序项目时,我遇到了错误: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
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
{