一、如何查找资料
学会利用官方文档很重要,这里我简单地讲下怎么找到我们想要的内容比如这篇文章的主题--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文件。