• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

QT生成带界面的动态库并使用

武飞扬头像
浅~的
帮助1

一、练习环境

Ubuntu18.04 下安装的QT 5.12.0

二、库的生成

1、新建Project —> Library—>C 库

学新通

2、输入项目名QTLib,可以选择库类型:静态库,动态库,或者qt插件。要创建的是动态库,所以选择共享库

学新通

3、选择编译器,然后按照个人需求选择相关的模块,我就简单点选择QtWidgets

学新通

4、来到这里,目录结构的相关文件就已经建立好了

学新通

学新通

学新通5、因为还需要一个ui界面文件,因此上面的qtlib.h和qtlib.cpp还需要重建。喜欢动手的可以看别的资料。我懒  我选择Qt自动创建:右键项目目录—>Add New…—>选择Qt设计师界面类—>界面模板选 Widget

6、注意类名要与原先一样 QTLib,点击下一步,点击完成

学新通

7、弹出下图提示,点击 ok  ,直接覆盖

学新通

8、选择 Yes to All

学新通

9、再次打开qttlib.h和qtlib.cpp文件

学新通

学新通

学新通

10、发现qtlib.h 里 共享库的宏 QTLIBSHARED_EXPORT 和头文件qtlib_global.h 没有了,把它补上

学新通

11、写个简单的用例,以便后面鉴别是否使用到动态库

ui 文件

学新通

cpp 文件

学新通

12、直接编译执行,出现了一堆重复定义的错误,是因为.pro文件里出现了重复定义,把相同的删掉一个就可以了

学新通

 学新通

13、再次编译执行。因为创建的库文件,所以不会出现界面,弹出下图,直接关掉就行

学新通

14、去到构建目录,可以看到已经生成了相应的 so 库文件(windows平台最终生成的是dll文件,而linux下则是so文件)

学新通

三、使用动态库

1、新建一个QT 界面工程Test,ui文件只放一个qwidget 控件,把qtlib.h和qtlib_global.h拷贝到当前工程的文件目录下,包含头文件。(后面再修改动态库工程,qtlib.h有变化的还需及时替换到这里)学新通

2、右键添加库—>选择外部库,指定路径。点击下一步,点击完成

学新通

3、QT 会自动在 .pro 文件 添加一大段内容(就是指定库的路径)

学新通

4、编写mainwindow.cpp ,简单地使用动态库

学新通

5、编译运行,出现了一个错误:找不到对应的动态链接库。

但由上面第14步,我们知道是系统是存在libQTLib.so.1文件的

/home/lwz/qt_project/build-Test-Desktop_Qt_5_12_0_GCC_64bit-Debug/Test: error while loading shared libraries: libQTLib.so.1: cannot open shared object file: No such file or directory

学新通

6、去到build-Test-Desktop_Qt_5_12_0_GCC_64bit-Debug目录,用ldd 查看了Test相关信息

学新通

明明存在动态库文件,为什么系统就是找不到呢。百思不得其解之际,突然想到会不会是我动态库所在的路径的问题?

尝试着去看了一下系统动态库的配置文件 /etc/ld.so.conf,发现里面没有libQTLib.so.1所在的路径

7、添加路径并生效配置

在终端执行命令:  sudo vi /etc/ld.so.conf

在最后添加  libQTLib.so.1所在的路径

学新通

在终端执行命令:sudo ldconfig  ,生效配置文件

8、再次运行程序,成功

学新通     学新通 

注:以上修改系统动态库的配置文件 /etc/ld.so.conf 只是验证问题方法,后续还是要根据个人良好习惯统一整合处理动态库的路径目录等,当然不能每生成一个库就改一次配置文件啦

最后来到这里,不禁有个疑问:这个带界面的库和控件提升有什么区别?

(才开始整QT库,恳请指教,望勿喷)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbjeaa
系列文章
更多 icon
同类精品
更多 icon
继续加载