Qt 导出类及导出类被调用

在Qt中,导出类涉及到创建库的时候在类声明前使用宏定义。当其他项目想要使用该库中的类时,这些类就可以被正确地导入和使用。下面是一个简单的示例来展示如何导出一个类:

1. 定义导出宏(在你的库项目中)

#ifndef MYLIBRARY_GLOBAL_H
#define MYLIBRARY_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(MYLIBRARY_LIBRARY)
#  define MYLIBRARYSHARED_EXPORT Q_DECL_EXPORT
#else
#  define MYLIBRARYSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // MYLIBRARY_GLOBAL_H

这里使用了条件编译。当编译库自身的时候,`MYLIBRARY_LIBRARY`应该被定义(通常在项目文件中),这样`MYLIBRARY_EXPORT`就会在类前面扩展为`Q_DECL_EXPORT`,它在Windows上展开为`__declspec(dllexport)`,这是告诉编译器将这个类导出到库中。

当其他项目包含这个头文件时(并且`MYLIBRARY_LIBRARY`没有被定义),`MYLIBRARYSHARED_EXPORT`就会扩展为`Q_DECL_IMPORT`,在Windows上展开为`__declspec(dllimport)`,这是告诉编译器从外部库导入类。

2. 使用导出宏

然后,在你的类定义中使用`MYLIBRARYSHARED_EXPORT`:

#include "mylibrary_global.h"

class MYLIBRARYSHARED_EXPORT MyClass
{

public:
    MyClass();
    void myFunction();
};

//mylibrary.cpp

MyClass::MyClass()
{
}

void MyClass::myFunction()
{
   qDebug()<<QString::fromUtf8("导出类函数被调用!");
}

这样,`MyClass`就会根据`MYLIBRARYSHARED_EXPORT`宏的定义被正确地导出或导入。 

3. 在.pro文件中定义宏

在你的库的`.pro`文件中,你需要加入下面这行来定义`MYLIBRARY_LIBRARY`,因此在构建库时`Q_DECL_EXPORT`会生效:
DEFINES += MYLIBRARY_LIBRARY

 4. 编译库

并确保产生的`.dll`(Windows)或`.so`(Linux / macOS)文件对应用程序或其他库可用。

5. 使用导出的类,包含头文件并链接对应的库

在另一个项目的.pro文件中:

INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib -lMYLIBRARY

 

#include "mylibrary.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    MyClass myObject;
    myObject.myFunction();

    return a.exec();
}

运行结果:

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Workbench是一个用于软件开发和设计的集成开发环境(IDE),它有助于开发人员创建和管理代码,并提供了各种工具和功能来简化开发过程。其中一个功能是导出图,它可以帮助开发人员可视化和理解整个项目的和它们之间的关系。 要导出图,首先要确保已在Workbench中打开了相应的项目。接下来,可以通过以下步骤来导出图: 1. 在Workbench的导航栏中,找到并点击"项目"或"文件"菜单。 2. 在菜单中,找到并选择"导出"选项。 3. 接下来,在导出对话框中,选择"图形"或"UML"相关的选项。这些选项可能会有所不同,具体取决于Workbench的版本和配置。 4. 在图形或UML选项中,应该能够找到"图"或"Class Diagram"选项。选择此选项以导出图。 5. 选定的导出选项后,可以选择导出的文件格式(如JPEG、PNG、SVG等)和保存位置。 6. 完成所有选项选择后,点击"导出"或"OK"按钮以开始导出过程。 导出图后,它将生成一个静态图像文件,其中包含了项目中所有相关的和它们之间的关系。这个图像可以被用来进行代码审查、文档编写、演示或与其他开发人员共享。通过可视化的方式查看图,开发人员可以更容易地理解和分析代码结构,从而更好地设计和优化软件系统。 总而言之,Workbench的导出功能是一个强大的工具,可以帮助开发人员更好地管理和理解他们的代码。它为开发人员提供了一个集中的视图,以便他们可以清晰地了解和分析整个项目的和它们之间的关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值