gpt4 book ai didi

qt - 将基于 QObject 的类导出到 DLL

转载 作者:行者123 更新时间:2023-12-04 13:38:19 24 4
gpt4 key购买 nike

我正在编写一个派生自 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 用于另一个应用程序。 dll 编译成功。我已添加 LIBS += "myDll.dll".pro使用此 dll 的应用程序文件,我已复制 myDll.dll到应用程序的工作目录。

编译器报告:
 C4273: "MyDll::qt_static_metacall" : inconsistent dll linkage.
C2491: "MyDll::staticMetaObject": definition of dllimport static data member not allowed

这里有什么问题?

最佳答案

您的 mydll_global.h 代码检查是否 MYDLL_LIBRARY已定义,但您发布的所有代码均未定义 MYDLL_LIBRARY .这是否在您尚未就问题共享的文件中声明?如果没有,则需要添加 #define MYDLL_LIBRARY在您的构建项目或 PCH 中。

关于qt - 将基于 QObject 的类导出到 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com