31、Qt生成使用静态库文件

发布于:2024-05-19 ⋅ 阅读:(87) ⋅ 点赞:(0)

一、生成静态库文件

新建Qt项目,选择“Library”“C++ Library”

更改项目名称和位置

选择静态库

选择编译器

项目创建完的文件树

更改.h代码

#ifndef MYLIB_H
#define MYLIB_H

class MyLib
{
public:
    MyLib();

    int addFun(int value1, int value2);

    int subFun(int value1, int value2);
};

#endif // MYLIB_H

更改.cpp代码

#include "MyLib.h"

MyLib::MyLib()
{
}

int MyLib::addFun(int value1, int value2)
{
    return (value1 + value2);
}

int MyLib::subFun(int value1, int value2)
{
    return (value1 - value2);
}

右击项目名称,选择“构建”

构建完成后,在项目生成文件夹中生成如下两个文件,

  • libMyLib.a:静态链接库文件,MinGW编译器生成的静态库文件后缀是.a,MSVC编译器生成的静态库文件后缀是.lib;
  • MyLib.o:目标文件,是编译器编译源文件后生成的中间文件。

二、使用静态库文件

新建一个Qt项目,把上一个项目的如下两个文件拷贝过来

右键项目名称,选择“添加库”

选择“外部库”

点击“浏览”

选择“libMyLib.a”

选择“静态”,取消勾选“为debug...”

点击“完成”

.pro文件中多出如下内容

再次右击项目名称,选择“添加现有文件”

选择“MyLib.h”

MyLib.h文件被添加到了项目中

在.ui界面上添加如下控件,并修改两个QPushButton的objectName

更改.h代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "MyLib.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_addPushButton_clicked();

    void on_subPushButton_clicked();

private:
    Ui::MainWindow *ui;

    MyLib m_lib;
};
#endif // MAINWINDOW_H

更改.cpp代码

#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_addPushButton_clicked()
{
    int ret = m_lib.addFun(ui->lineEdit->text().toInt(), ui->lineEdit_2->text().toInt());
    ui->label->setText(QString::number(ret));
}

void MainWindow::on_subPushButton_clicked()
{
    int ret = m_lib.subFun(ui->lineEdit->text().toInt(), ui->lineEdit_2->text().toInt());
    ui->label->setText(QString::number(ret));
}

运行程序,在输入框中输入数值,点击加法

点击减法