Qt中库的创建和使用整理

1.Qt中认为C++ Library有三种形式:

(1) Shared Library -- 共享库

1> 共享库,在Windows下生成的是DLL文件,也可叫动态库。Qt6更新后,将选择默认支持模块整理为图中4种类型。它们的区别表现为:

<1> 选择Core模块,QT -= gui。

<2> 选择Gui模块,QT += gui。

<3> 选择Widget模块,QT += widgets。

新建动态库文件组织接口、接口文件和目标结果文件如下图所示:

扩展一下,增加槽和信号的测试,即接口类需要继承自QObject。 接口类头文件:

#include <QObject>

class DYNLIB_EXPORT DynLib : public QObject
{
    Q_OBJECT
public:
    DynLib(QObject *parent = nullptr);

    int test();

public slots:
    void slot_test();

signals:
    void signal_test();
};

接口类源文件


DynLib::DynLib(QObject *parent) : QObject(parent)
{

}

int DynLib::test()
{
    qDebug() << "this is a test function";
    emit signal_test();
    return 0;
}

void DynLib::slot_test()
{
    qDebug() << "this is a slot test";
}

在控制台程序中进行简单测试使用

#include <QCoreApplication>
#include "../../DynLib/dynlib.h"

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

    DynLib _lib;
    QObject::connect(&_lib, &DynLib::signal_test, &_lib, &DynLib::slot_test);

    _lib.test();

    return a.exec();
}

2> 使用方式

在使用库函数的地方引入共享库头文件,可以使用相对路径,也可以使用绝对路径。

#include <QCoreApplication>
#include "../../DynLib/dynlib.h"

在*.pro文件中加载dll文件。

-L 后边为dll文件所在路径,支持相对路径和绝对路径。

-l 后边为dll文件名称,-l表示链接动态库命令。

LIBS += -L../build-DynLib-Desktop_Qt_6_4_3_MinGW_64_bit-Debug/debug/ -lDynLib

使用动态库中函数。

DynLib _lib;
_lib.test();

(2) Statically Linked Library -- 静态库

编译后生成一个lib文件,MSVC编译器生成的文件后缀为“lib”,MinGW编译器生成的文件后缀为“a”。

使用方式与动态库一致

(3) Qt Plugin

暂未使用。

(4) C++中模块DLL对外暴露接口的方式

1> 导出API函数的方式

2> 到处类方式

3> COM方式

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Linux中,Qt Creator是一个强大的集成开发环境,用于开发跨平台的应用程序。在使用Qt Creator创建和调用动态时,需要经过以下几个步骤: 1. 首先,在Qt Creator中新建一个工程。选择“Dynamic Library”作为项目类型。 2. 在工程文件中,定义需要暴露给其他程序使用的函数和类。可以在.h头文件中声明函数和类的接口,并在.cpp源文件中实现相应的功能。 3. 编译生成动态文件。在Qt Creator中,可以点击“构建”按钮编译和链接生成动态文件。生成的动态文件一般以.so(shared object)为扩展名。 4. 创建一个新的可执行程序项目,并引用该动态。在新的项目中,需要在.pro文件中添加对动态的依赖关系。例如,可以使用LIBS += -L/path/to/library -lmylibrary来指定动态的路径和名称。 5. 在可执行程序中调用动态中的函数或类。在主函数或其他需要使用动态的地方,可以直接调用动态中定义的函数或类,实现相应的功能。 值得注意的是,动态的调用中还需要注意以下几点: 1. 在调用动态函数时,需要先加载动态。可以使用dlopen函数加载动态文件,并使用dlsym函数获取需要调用的函数指针。 2. 调用动态中的函数时,需要根据函数的参数类型进行适当的类型转换。因为动态函数的参数类型可能与调用者的类型不完全匹配。 3. 在完成动态使用后,需要使用dlclose函数关闭对动态的引用,释放相关资源。 总结来说,使用Qt Creator在Linux中创建和调用动态需要进行项目的设置、编译生成动态文件,然后在其他项目中引用动态并调用其中定义的函数或类。同时,还需要注意动态的加载和关闭过程,以确保正确使用动态功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值