Qt——pro文件的使用&Qt调用dll

一、如何查找资料

学会利用官方文档很重要,这里我简单地讲下怎么找到我们想要的内容比如这篇文章的主题--pro文件。

搜索Qt Document


在搜索栏中输入pro file,即可看到.pro文件的所有相关文档

点击第二个链接,就可以看到pro文件的一些细节了。

当然,也可以在Qt Creator中找到document,只是可以搜索起来不是那么方便。

二、pro文件概述

project文件包含qmake(一个可以生成makefile文件的工具)所需要的所有信息,通过这些信息,qmake可以构建我们的应用、库、插件等等。

project文件中主要有以下变量

变量 作用
CONFIG 一般项目配置选项。
DESTDIR 放置可执行文件或二进制文件的目录。
FORMS 由用户界面编译器(uic)处理的UI文件列表。
HEADERS 构建项目时使用的头文件(.h)列表。
QT 项目中使用到的Qt模块列表
RESOURCES 项目中包含的资源文件(.qrc)列表
SOURCES 构建项目时要使用的源代码文件列表。
TEMPLATE 用于该项目的模板。可以选择应用程序,库还是插件。

       我们创建桌面项目时,会自动生成pro文件,同时里面会有默认配置,一般我们不需要去改动。

但是,当我们要用到第三方库,或者是要使用资源文件的时候,就要做一些修改了。

具体可以参照这个链接,里面讲的比较详细:

QT中PRO文件写法的详细介绍,很有用,很重要! - CSDN博客

也可以直接看前面我讲的的官方文档

Creating Project Files | qmake Manual

三、Qt调用dll文件

这里,我以调用dll文件(实现两个数相乘),作为pro文件使用的一个例子。

1、首先,创建一个C++库


点击选择


注意类型选择为共享库,下一步

选择你想要的Kits,下一步


这里因为我只是实现简单的相乘,所以只使用QtCore模块,下一步


这里会自动生成几个文件,文件名默认即可,点击下一步,完成。

2、写代码

这是我写好的文件

(1)multiply.h头文件

#ifndef MULTIPLY_H
#define MULTIPLY_H

#include "multiply_global.h"

class MULTIPLYSHARED_EXPORT Multiply
{

public:
    Multiply();

    //声明相乘函数
    int MultiplyTwo(int a, int b);
};

#endif // MULTIPLY_H

(2)multiply.cpp文件

#include "multiply.h"


Multiply::Multiply()
{
}


//实现相乘函数
int Multiply::MultiplyTwo(int a,int b)
{
    return a * b;
}

3、构建


完成之后就可以在release目录下找到dll等文件了


4、新建工程,调用上面生成的dll文件

我创建的是基于MainWindow的桌面应用


这里采用隐式调用。

首先,修改pro文件

在pro文件的后面,添加以下语句(其中目录根据你自己的实际目录做下修改,此外注意是反斜杠):

#指定前面构建multiply工程得到的release文件夹中的lib文件
LIBS += F:/QtFiles/QtRoad/VS/build-multiply-Desktop_Qt_5_9_1_MSVC2017_64bit-Release/release/multiply.lib
#使工程包含multiply工程中的头文件
INCLUDEPATH += F:/QtFiles/QtRoad/VS/multiply

接着,在mainwindow.cpp上写调用代码

#include "mainwindow.h"
#include "ui_mainwindow.h"

//加入包含文件
#include "multiply.h"
#include <qDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //调用dll
    Multiply mul;
    int c = mul.MultiplyTwo(2,3);//若能调用成功,则QtCreator的输出信息栏将输出整数6
    qDebug()<<c;
}

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

点击运行,发现出现异常


这是因为,编译得到的可执行文件需要有dll才能运行。所以要复制multiply.dll到工程的release目录下,跟UseMultiply.exe放在一块。

复制好dll后,点击运行


可以看到,在弹出窗口的同时,QtCreator的输出信息栏输出6,说明我们的dll文件已被正确调用。


另外,上面pro文件LIBS语句也可以这么写:

LIBS += -L"F:/QtFiles/QtRoad/VS/build-multiply-Desktop_Qt_5_9_1_MSVC2017_64bit-Release/release" -lmultiply

具体参考Third Party Libraries | Qt 5.10



综上,隐式调用就是:

(1)在pro文件用LIBS给它指定一下lib文件在哪里(multiply库工程的构建目录下);

(2)在你的工程编译目录下(exe所在目录),放一个我们所要调用的dll文件。



猜你喜欢

转载自blog.csdn.net/sinat_30973431/article/details/80002296