簡體   English   中英

無法枚舉庫(未定義的引用 staticMetaObject)

[英]Can't get enumeration on library (undefined reference staticMetaObject)

我有一個使用 Qt 庫(共享庫)的應用程序。 在我的庫中,我有一個包含多個枚舉的類,我想在主應用程序上使用它們。 我構建我的庫項目沒有問題,但是當我構建主應用程序項目時,出現錯誤:

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

我沒有找到有關此錯誤的信息。

這是我的書目 .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。

感謝您的幫助

創建要鏈接的共享庫時,您需要確保在創建庫時正確導出將在庫外使用的符號。 然后在您鏈接庫時導入。 這可以使用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
{

請閱讀如何使用 Qt 創建庫並在應用程序中使用它以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM