5-Qt5链接动态库与静态库
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
Qt5链接动态库与静态库
本教程以链接前面介绍的GSL科学计算库的静态库和动态库为例进行讲解,后续会介绍在QT中创建自己的静态库和动态库,使用库的好处是可以提供代码复用性,我们只需要导入相应的库和头文件便可调用相关函数API,可以加速开发进程
1. 什么是静态库和动态库?
-
静态库(static library):一组目标文件(
.o/.obj
文件)的集合,在Linux下或者是mingw环境下通过程序ar
生成,意为archive
,打包的意思。- Linux下静态库后缀为:
.a
,例如/usr/local/lib/libgsl.a
- Windows下(mingw环境)静态库名称和Linux一致,如果是MSVC环境编译得到的静态库,后缀为
.lib
- Linux下静态库后缀为:
-
动态库(dynamic library):使用静态库编译得到的可执行文件一般比较大,为此开发出了动态链接技术。
- Linux下动态库后缀为:
.so
,意为shared object
- windows下(mingw)动态库后缀为
.dll
,意为dynamic linking library
,MSVC
环境编译得到动态库后缀亦为.dll
- Linux下动态库后缀为:
2. Qt编译链接动态库
以GSL库为例,要链接动态库其gsl.pri
文件(关于该文件的配置请查看前面一份教程《Qt导入第三方库》)内容如下:
# 宏定义项,指明采用GSL
DEFINES += GSL_DLL
# 指明GSL库所对应的头文件所在目录
INCLUDEPATH += $$PWD/include
# 指明依赖库关系,$$PWD表示文件当前路径
LIBS += -L$$PWD/lib -lgsl
LIBS += -L$$PWD/lib -lgslcblas
使用Qt Creator
新建一个窗口程序,在MainWindow.ui
放置按钮和QLineEdit
控件,目标行为:点击按钮,QLineEdit
控件显示贝塞尔曲线J0
的值。
可以下载使用cmder
,利用该环境自带的ldd
命令查看可执行文件的依赖库,如果相应的动态库不在系统环境变量中,会提示报错。
3. Qt编译链接静态库
修改gsl.pri
文件内容如下:
# 宏定义项,指明采用GSL
DEFINES += GSL_DLL
# 指明GSL库所对应的头文件所在目录
INCLUDEPATH += $$PWD/include
CONFIG += static # 指定静态编译
LIBS += D:/temp/gsl/lib/libgsl.a
LIBS += D:/temp/gsl/lib/libgslcblas.a
在cmder
下使用ldd
检测依赖项。
如果小伙伴们对文章内容有不理解的地方可以查看相对应的视频教程:https://www.bilibili.com/video/av63186491
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献15条内容
所有评论(0)