请选择 进入手机版 | 继续访问电脑版
快捷导航
0 66

Qt学习篇(二):Qt加载动态库

Serial 于 2018-5-11 09:49 发表在 [技术分享] [复制链接]
      之前写到Qt的信号槽机制,这篇来记录下Qt如何加载外部动态库。
      Qt加载动态库分为显式加载与隐式加载,现在先来了解下链接库:
(1)动态链接库,通常有.h .lib .dll三个文件,功能实现在dll中(有时.lib会以***.dll.a的形式显示,两者意义相同);
(2)静态链接库,通常有.h .lib二个文件,功能实现在lib中。

      
       显式加载DLL:
  • 显式加载只需要dll文件,不需要.h和.lib,需要将DLL放到可执行文件目录中(与项目编译得到的exe文件放在一起);
  • 显式加载只需要操作**.C文件,不需要更改项目配置文件,首先是调用QLibrary,#include <QLibrary>;
    1. QLibrary test_dll("*****.dll");//加载*****.dll
    2. if (test_dll.load())//判断是否加载成功
    3. {
    4.         myfun fun = (myfun)test_dll.resolve("***");//获取dll的函数,***为动态库中的函数
    5.         if (fun)//判断是否获取到此函数
    6.         {
    7.                 //正常使用该函数
    8.         }
    9. }
    复制代码



       隐式加载DLL:
  • DLL隐式加载,需要.dll, .h, .lib文件;
  • 需要将dll文件放到可执行目录下,在**.pro文件中添加lib的路径,包含头文件(可使用绝对或相对路径,也可在**.pro中添加include路径,使用时直接包含头文件便可);
  • 在包含头文件时,若在C++项目中加载C语言的动态库,需使用extern包含头文件;
  • 在**.pro中添加lib路径:
  •          在**.pro中右击编辑区域选择添加库,并选择外部库,在库文件路径中添加你的lib文件路径;
  • 注意标注区域的选择,在添加库时会默认添加该库对应的.h文件的路径,但是我的有时.h路径添加了却在include时出现查找不到文件,所以在include时建议使用.h在项目中的相对路径;
    1. INCLUDEPATH += $PWD/X264

    2. LIBS += $PWD/X264/libx264.lib
    复制代码

至此,Qt加载动态库就完成了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Connecting & Messaging from Any.

共 0 个关于本帖的回复 最后回复于 2018-5-11 09:49

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

热门排行

明星用户

手机版|小黑屋|AnyMSG ( ©AnyMSG 2009 - 2017 · ICP备16009991号 )

GMT+8, 2019-2-20 03:13