Qt 生成dll和lib方法及简单使用介绍

1 篇文章 0 订阅
1 篇文章 0 订阅

1.点击新建文件或项目,点击选择,如下图:
新建C++库

然后正常去创建(与普通构造app项目一致),创建名称为testlesson,生成如下图所示,

其中Testlesson.h代码如下
这里面简单解释一下,TESTLESSONSHARED_EXPORT是个宏定义,在testlesson_global.h中有体现,这个TESTLESSONSHARED_EXPORT相当于一个导出的意思,把这个类导出,下面自己定义了一个函数叫testfuntion,也是导出,共后面使用:

#ifndef TESTLESSON_H
#define TESTLESSON_H
#include "testlesson_global.h"
class TESTLESSONSHARED_EXPORT Testlesson
{
public:
    Testlesson();
};
extern "C" TESTLESSONSHARED_EXPORT void  testfuntion();
#endif // TESTLESSON_H

testlesson_global…h代码如下,主要是宏定义的作用。

#ifndef TESTLESSON_GLOBAL_H
#define TESTLESSON_GLOBAL_H


#include <QtCore/qglobal.h>

#if defined(TESTLESSON_LIBRARY)
#  define TESTLESSONSHARED_EXPORT Q_DECL_EXPORT
#else
#  define TESTLESSONSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // TESTLESSON_GLOBAL_H

Testlesson.cpp代码如下:

#include "Testlesson.h"
#include <QMessageBox>
Testlesson::Testlesson()
{

}

void testfuntion()
{
    QMessageBox::information(0, "title","testlib");
}

以上就是一个lib和dll文件还有相关头文件生成的过程及代码。这里要补充一下,这几者的关系,其中lib我个人总结为一个结构,起链接的作用,如果是静态链接,代码也可以封装在lib里,而dll为动态链接库,代码段都在dll里。
以下这段摘自网上:

.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成
LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。
.h .lib .dll三者的关系是: H文件作用是:声明函数接口 DLL文件作用是: 函数可执行代码
当我们在自己的程序中引用了一个H文件里的函数,编链器怎么知道该调用哪个DLL文件呢?这就是LIB文件的作用: 告诉链接器
调用的函数在哪个DLL中,函数执行代码在DLL中的什么位置 ,这也就是为什么需要附加依赖项
.LIB文件,它起到桥梁的作用。如果生成静态库文件,则没有DLL ,只有lib,这时函数可执行代码部分也在lib文件中。

下面讲具体使用方法:讲上述生成的
在这里插入图片描述然后把上面的两个.h文件和这里面的.a文件还有.dll文件放在自己的主程序文件夹中,如果用了影子模式就放在影子模式编译的文件夹中。

下一步就是这三个文件中的.a和.dll文件,这里.a文件相当于就是lib,可能在linux就叫做lib,然后在自己构造的工程中pro添加如下代码

LIBS+= -L. -l testlesson

这里-L指的是dll文件.h文件,.a文件的路径,-l指的是库的名字,会自动寻找.a文件,然后自己加上lib+名字+.a 所以我们这面要把libtestlesson.a去掉开头的lib和结尾的.a

最后就是构造和运行了。

自己总结下编译和运行的区别:
在这里插入图片描述

由于本人是个初学者,如果对以上还有疑问的小伙伴可以咨询zhangyin.29@163.com

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值