一、创建动态链接库
1、新建项目
第一步选择Library
第二步选择C++Library
第三步选择Choose
之后第一步设置名称
第二步选择路径
第三步点击下一步
然后一直点击下一步到如下页面
说明创建静态链接库和动态链接库类似
创建动态链接库选择Shared Library
创建静态链接库选择Statically Linked Library
我们创建动态链接库选择Shared Library然后点击下一步
然后一直下一步知道完成
2、设置项目
为了使用更方便我们将图中Test_global.h中蓝色代码部分复制到test.h中下图
若不复制到test.h中则在使用时需要把Test_global.h头文件也包含进去,不然无法使用该测试函数。
之后将Test_global.h文件删除掉并且把test.h中#include <Test_global.h>删除
3、进行代码设置
在test.h中声明一个函数MyTest()如图
在test.cpp定义该函数体
选择Release点击运行
因为没有可执行文件并不能运行会报如下问题,不用管它,到此说明动态链接库设置成功了。
4、结果
在生成的文件夹里会出现如下四个libTest文件,再将test.h放入该文件夹,则该文件夹就可以给别人使用了。
二、使用动态链接库
1、创建TestLib项目
2、导入库
右击该项目点击添加库
选择外部库点击下一步
库文件选择刚才生成四个文件中的.so文件
平台选择Linux
点击下一步直到完成
导入之后在.pro文件中可以看到如下效果
3、导入头文件
添加现有文件
选择刚才生成目录里添加的头文件test.h
4、实现代码
在widget.h代码
添加头文件
定义成员变量和测试函数
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "test.h" //包含头文件
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
//成员变量
Test m_Test;
//测试动态链接库
void LibTest(); //测试
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
在widget.cpp中实现该MyTest()函数,函数中用到qDebug需导入QDebug头文件
在构造函数中调用该测试函数
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//调用测试函数
this->LibTest();
}
Widget::~Widget()
{
delete ui;
}
void Widget::LibTest()
{
qDebug() << m_Test.MyTest(4,6);
}
5、结果
点击运行可以看到运用程序输出看到如下结果说明测试成功