Qt中正确引用外部头文件和库文件的方法和注意点

2 篇文章 0 订阅
1 篇文章 0 订阅


要引入外部库,其主要便是正确编写 pro文件。

一、什么报错是外部库导入错误导致的

  1. 诸如xxxxxxx.cpp:1627: error: ‘sdk’ was not declared in this scope,顾名思义,未声明,往往就是找不到头文件导致。
  2. 诸如xxxxxxx.cpp:1624: error: undefined reference to这一类报错,顾名思义,未定义,往往是找不到库文件导致。

二、解决外部库使用的方法

(一)写入系统环境变量中的外部库调用

在Qt中,“项目”下的“构建设置”下有一个“构建环境”,一般默认使用的是系统环境变量,在“运行设置”下的“Run Environment”一般为使用构建环境,即也是使用的系统环境变量。因此可知,在Qt中调用头文件以及库文件,与系统环境变量是直接相关的。

1、解释说明
  1. 在Windows中,环境变量就是看“Path”下的配置项,不论是头文件还是库文件所在的文件夹位置,都是写在这下面
  2. 在Linux中,与Windows不同的是,与头文件相关的默认环境变量就是/usr/include/usr/local/include这两个目录下。与库文件相关的默认环境变量除了/usr/lib/usr/local/lib(lib可能为lib64,一样的效果)这两个目录下,还包含LD_LIBRARY_PATHLIBRARY_PATH,前者为运行库时使用,后者为构件库使用,但好像前者在构件库也生效。
  3. 写在系统环境中的头文件就可以直接使用了。
2、使用演示
1.头文件

使用#include <xxxx.h>调用。

2.库文件

在Qt工程文档中的xx.pro中,使用LIBS添加库文件,添加所需库文件时使用的名称,为-l加库文件名称(如前面有lib,去掉lib,后面的后缀不要),比如添加libosg.so库文件,写法如下:

LIBS+=-losg //+=的意思是可以直接追加

如果需要添加的库文件较多,可以这么写:

OSGLIBS=-losg -losgDB -losgGA
LIBS+=$$OSGLIBS

(二)未写入系统环境变量中的外部库调用

1、解释说明
  1. 头文件则需要将头文件所在文件夹,或者所在文件夹之前的上几级文件夹写入pro文件中,使用到的属性为INCLUDEPATH
  2. 库文件的同样需要将库文件所在的文件夹写入pro文件夹中,使用的属性为QMAKE_LIBDIR
2、使用演示
1.头文件

pro文件中:
windows下:

osg_dir="C:\test\osg"  //在双引号中左斜右斜都一样
INCLUDEPATH+=$$osg_dir/include //当然也可以是别的文件夹路径和名称

linux下:

INCLUDEPATH+=/home/test/osg

这样便能调用文件夹下的头文件了,注意,如果此时文件夹下还有子文件夹,可以有两种方法
一种是将后续目录写在调用位置,如下:

#include <test/xxx.h>

另一种是将目录写到INCLUDEPATH后面,一直到这个头文件,如下:

INCLUDEPATH+=/home/test/osg/test
#include <xxx.h>
1.库文件

pro文件中添加如下内容:

osg_dir="C:\test\osg"  //在双引号中左斜右斜都一样
QMAKE_LIBDIR+=osg_dir/lib  //这个是库文件所在的文件夹路径及名称 
OSGLIBS=-losg -losgDB -losgGA
LIBS+=$$OSGLIBS

三、总结

  1. 环境变量中有的则直接调用。
  2. 环境变量没有的将路径写在pro文件夹中,然后调用。
  3. 注意pro文件的语法正确。
  • 11
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼月半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值