截屏2024-08-04 11.46.25

1.获取库的.dll和.lib(或.a)

在资源管理器中找到对应库的.dll和.lib(或.a)

如果第三方库不是Qt生成的:

通常比较规范的第三方库,有libinclude两个文件夹。lib文件夹就是包含的库文件。include则包含头文件。

如果第三方库是Qt生成的:

(通过Qt创建库的方法请见另一篇文章)

第三方库的构建时可以选择构建套件(Kit):

使用的MSVC编译:编译后会生成.dll.lib两个文件。.dll在运行应用程序时调用,.lib在应用程序隐式调用动态链接库时使用
使用MinGW编译:编译后会生成.dll.a两个文件,.dll在运行应用程序时调用,.a在应用程序隐式调用动态链接库时使用

注意,如果一个项目中使用了第三方库,构建项目时使用的套件,必须与使用的第三方库构建使用的套件一致,否则会报错”link1104“错误

即如果第三方库用的MinGW编译,项目中添加的库文件是.a,那么项目构建的时候,也是用MinGW编译才可以通过

image-20240803102506454

构建时可以选择套件、构建的位置,如果选择了Debug,则应该到中间文件目录的Debug文件夹下去找构建后的库:
中间文件目录会生成到项目文件的同级目录下:

image-20240803103351534

2.获取库的头文件

在资源管理器中找到对应库的头文件

如果第三方库不是Qt生成的:

一般就存在于第三方库的include文件夹下

如果第三方库是Qt生成的:

头文件存在于项目目录下

image-20240804110803753

3.在项目中添加该库文件 及 相关头文件

方法一:不拷贝(推荐)

添加库

右击项目,选择“添加库”

image-20240803163413609

或者打开.pro文件,在空白处右击鼠标,选择添加库

image-20240803163448944 image-20240803164247193 image-20240803164401963

点击库文件的“浏览”,库的.a文件。如果库是Qt生成的,则找到对应的中间文件目录的debug目录或者release目录,找到对应的.a文件。

image-20240803164505781
添加库的头文件路径

点击“包含路径”后面的“浏览”

image-20240804111413939

找到库的项目目录(如果库是Qt构建的),选中,然后点击右下角选择文件夹

image-20240804111523486

因为Qt的头文件在项目目录下

完成之后,确定剩余的勾选项,然后一直下一步,直到结束

image-20240804111646721

关于勾选项:
平台:如果不是Linux和mac平台,可以只选Windows
链接:根据需求选择,可以直接选动态
Windows下的选项:
因为当前使用的库并不是存在于中间文件目录的debug或release子目录下,而是复制到了工程目录下,所以不勾选
“为debug版本添加’d’作为后缀”建议不勾选(勾选了之后在.pro文件中会在库名后加一个d,构建时容易报错“找不到库文件”,如果勾选上,在.pro将d删除即可

image-20240803112021251

​ “移除release版本中的’d’后缀”不勾选

此处可以查看一下项目的.pro文件,里面有和库有关的配置信息:
在添加完库之后,.pro文件中会新生成几行:

image-20240804112017650

其中LIBS是确定库的所在位置(-L),以及库名(-l)

INCLUDEPATH是指定头文件的搜索路径

DEPENDPATH用于指定项目中的源文件所依赖的头文件的搜索路径

(二者区别见Qt构建中DEPENDPATH和INCLUDEPATH区别

使用库

现在就可以使用库了,本例中使用的des.h即为库中的头文件

image-20240804112409882

方法二:拷贝

将库文件拷贝到当前项目下,新建目录

在工程目录下创建一个新的文件夹(此处取名lib,随意),将库的.dll.a复制进去(此处以.a为例)

将库的头文件拷贝到当前项目下,新建目录

在项目目录下新建文件夹(此处取名include,随意),将库头文件拷贝进来(如果多个头文件,建议全部拷贝,因为可能互相包含)。

image-20240803170601334

在Qt Creator中,右击项目中的Header文件夹,点击“Add Existing Directory”(也可以选择“添加现有文件”但是是单文件添加,效率低)

image-20240803170832859

选择当前项目目录下的include文件夹

image-20240803171320095

稍等片刻,项目中就添加完成了,同时.pro文件中也更新了配置

image-20240803171509008
添加库和头文件路径

在Qt Creator中右击项目名,点击添加库

image-20240803110136850

或者,打开项目的.pro文件,右击空白处,点击添加库

image-20240803110224689

选择“外部库”

image-20240803110249815

点击“库文件”右侧“浏览”

image-20240803110445314

找到刚在工程目录下创建的lib文件夹下的.a文件,选中打开即可

image-20240803110701026

完成后会发现“包含路径”一栏已经自动填充,而且是自动选择了项目目录下的include目录,即刚才拷贝过来的库头文件

image-20240804113021433

关于勾选框,左下如果没有特别情况,只勾选Windows即可。右侧Windows中,“debug或release子目录下的库”,如果是Qt生成的库,可以选上。“为debug版本添加’d‘作为后缀”不勾选。(详细看方法一此处介绍)

image-20240804113716498

之后一路点击“下一步”即可。

使用库

此时就可以使用库了,在引入头文件的时候,可以写相对路径,也可以不写

image-20240803172511304

构建一下,通过,可以正常使用

方法三:其他方式(不太推荐)

比如不在添加库时指定头文件目录,而是添加库后,在项目中添加现有文件夹(Add Existing Directory),在调用使用头文件时,使用绝对路径的方式

在Qt Creator中,右击项目中的Headers文件夹,选择“Add Existing Directory”(也可以选择“添加现有文件”但是是单文件添加,效率低)

image-20240803173247613

点击“浏览”,找到库(如果是Qt库,则找到该项目文件夹),选择(而不是进入),点击“选择文件夹

image-20240803173420793

然后点击”Start Parsing“,更新目录范围,点击三角图标,展开目录

image-20240803173614776

然后在下面栏中使用通配符*进行筛选,点击Apply Filters,即可选中所有.h文件

image-20240803175409005

按下OK,即可添加完毕
项目的.pro文件中也更新了配置

image-20240803175507117

在使用时,不能直接引用头文件原名,否则查找不到:

image-20240803175641151

需要写上绝对路径或者相对路径,相对路径写法可以参考.pro文件中的:

image-20240803175859426

构建一下,通过,可以正常使用

4.写在后面:

还是老生常谈的问题:

如果一个项目中使用了第三方库,构建项目时使用的套件,必须与使用的第三方库构建使用的套件一致,否则会报错”link1104“错误

即如果第三方库用的MinGW编译,生成的库文件包含的是.a,项目中添加的库文件是.a,那么项目构建的时候,也是用MinGW编译才可以通过

如果第三方库用的MSVC编译,生成的库文件包含的是.lib,项目中添加的库文件是.lib,那么项目构建的时候,也是用MSVC编译才可以通过