本文共 2151 字,大约阅读时间需要 7 分钟。
一、如何查找资料
学会利用官方文档很重要,这里我简单地讲下怎么找到我们想要的内容比如这篇文章的主题--pro文件。
搜索Qt Document
在搜索栏中输入pro file,即可看到.pro文件的所有相关文档
点击第二个链接,就可以看到pro文件的一些细节了。
当然,也可以在Qt Creator中找到document,只是可以搜索起来不是那么方便。
二、pro文件概述
project文件包含qmake(一个可以生成makefile文件的工具)所需要的所有信息,通过这些信息,qmake可以构建我们的应用、库、插件等等。
project文件中主要有以下变量
变量 | 作用 |
---|---|
一般项目配置选项。 | |
放置可执行文件或二进制文件的目录。 | |
由用户界面编译器(uic)处理的UI文件列表。 | |
构建项目时使用的头文件(.h)列表。 | |
项目中使用到的Qt模块列表 | |
项目中包含的资源文件(.qrc)列表 | |
构建项目时要使用的源代码文件列表。 | |
用于该项目的模板。可以选择应用程序,库还是插件。 |
我们创建桌面项目时,会自动生成pro文件,同时里面会有默认配置,一般我们不需要去改动。
但是,当我们要用到第三方库,或者是要使用资源文件的时候,就要做一些修改了。
具体可以参照这个链接,里面讲的比较详细:
也可以直接看前面我讲的的官方文档
三、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"#includeMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); //调用dll Multiply mul; int c = mul.MultiplyTwo(2,3);//若能调用成功,则QtCreator的输出信息栏将输出整数6 qDebug()<
点击运行,发现出现异常
这是因为,编译得到的可执行文件需要有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
具体参考
综上,隐式调用就是:
(1)在pro文件用LIBS给它指定一下lib文件在哪里(multiply库工程的构建目录下);
(2)在你的工程编译目录下(exe所在目录),放一个我们所要调用的dll文件。