QT:动态链接库的创建与使用

来源:互联网 发布:为知笔记 手机 导出 编辑:程序博客网 时间:2024/05/20 00:50


创建动态链接库

新建工程

  1. 启动Qt Creator依次选择 “文件/新建文件或工程…”,在弹出的“新建”对话框中依次选择 “其他项目/C++库”,如下图所示。
  2. 点击“选择(C)…”出现“C++库”对话框,在对话框中输入工程名称并选择路径,如下图所示。
  3. 点击“下一步(N) >”,直到出现模块选择的对话框,如下图所示,勾选QtGui。其他按照默认设置即可,直到向导完成。
  4. 在创建工程向导完成后会自动生成三个文件:GuiDll_global.h,guidll.h,guidll.cpp。我这里的工程名字与图上不同,因此建立的文件名称不同,建立的工程如下图:选中Shadow build,构建目录就是工程的输出路径(也可以不选中Shadow build,在pro文件中指定,下面的测试程序将使用这种方法)
    这里写图片描述
    自动建立的文内容如下:
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    • myqtdll_global.h
      这个文件不许要修改,如下
      这里写图片描述
    • myqtdll.h
      关键字MYQTDLLSHARED_EXPORT的意思是将类Myqtdll
      导出
      。下面对该类进行更改,需求为:创建并显示一个窗口,在窗口中显示一个QLabel控件。更改后的代码如下:
      这里写图片描述
    • myqtdll.cpp
      下面对该类进行更改,需求为:创建并显示一个窗口,在窗口中显示一个QLabel控件。更改后的代码如下:
      这里写图片描述

编译项目

生成动态链接库,其中三个是链接,一个是动态库,另外需要注意生成的路径是上面Shadow build中构建目录所指定的路径。
这里写图片描述

测试动态库

新建工程

在Qt Creator中创建空白的Qt工程qtdlltest,在工程中添加源文件main.cpp,输入如下代码:
这里写图片描述

修改文件

由于测试工程引用了libmyqtdll.so动态库,因此需要更改qtdlltest.pro文件,添加如下内容:

其中

DESTDIR =../Debug
意思是编译出来的工程目录是上级的Debug目录,和上面的Shadow build的功能一样。

这里写图片描述
其中

unix:!macx:!symbian: LIBS += -L$$PWD/lib/ -lmyqtdllINCLUDEPATH += $$PWD/includes

上面第二行表示添加库libmyqtdll.so,第一行将myqtdll.h头文件的路径添加到工程中。
上面的路径是因为我将动态链接库和头文件放在了工程目录下的lib文件夹与includes文件夹内,其实这两句话也可自动生成,在pro文件内点击右键选择‘添加库‘即可添加include路径与动态库的路径了。
这里写图片描述

运行

在qt内调试程序即可看到结果。
这里写图片描述

脱离Qt Creator运行程序

上一步实现了在Qt Creator内的程序运行,但是在终端内运行程序则会提示动态链接库找不到的错误。
这里写图片描述
由于linux系统默认的动态库加载路径为/lib和/usr/lib等几个系统重要目录,为了方便管理,此处的测试动态库只放在当前工程的lib目录下,因此必须修改环境变量LD_LIBRARY_PATH将lib目录添加到动态库的搜索路径中,命令如下:

export LD_LIBRARY_PATH=$$PWD:$LD_LIBRARY_PATH 

上面的意思是将当前目录加入环境变量中,因为我把动态库拷贝到了和可执行文件一个目录下。也就是程序运行时可以在同一目录下搜索动态链接库。
这里写图片描述

0 0
原创粉丝点击