【问题标题】:Can't get enumeration on library (undefined reference staticMetaObject)无法枚举库(未定义的引用 staticMetaObject)
【发布时间】:2016-03-23 11:48:02
【问题描述】:

我有一个使用 Qt 库(共享库)的应用程序。在我的库中,我有一个包含几个枚举的类,我想在主应用程序上使用它们。 我构建我的库项目没有问题,但是当我构建主应用程序项目时,我有错误:

moc_myapp.cpp:-1: erreur : undefined reference to `MyClass::staticMetaObject'

我没有找到有关此错误的信息。

这是我的 Biblio .pro

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 .pro :

TEMPLATE = app

QT += qml quick multimedia network widgets sql xml

SOURCES += main.cpp \
    myapp.cpp 

HEADERS += \
    myapp.h 

RESOURCES += qml.qrc 

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/pathTo/build-MyBiblio_Qt_5_2_1/release/ -lMyBiblio
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/pathTo/build-MyBiblio_Qt_5_2_1/debug/ -lMyBiblio

INCLUDEPATH += $$PWD/pathTo/MyBiblio
DEPENDPATH += $$PWD/pathTo/MyBiblio

在 myapp.cpp 上,我使用库的枚举定义:

MyClass::MyEnumeration

我包括“myclass.h”

我在 Windows 下使用 Qt 5.2。

感谢您的帮助

【问题讨论】:

  • 共享库不需要在 Windows 上导出/导入符号吗?

标签: c++ qt enums shared-libraries


【解决方案1】:

创建要链接的共享库时,您需要确保在创建库时正确导出要在库外使用的符号。随后在您链接库时导入。这可以使用Q_DECL_EXPORTQ_DECL_IMPORT 来完成

您的 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
{

请阅读How to create a library with Qt and use it in an application了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-04
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多