• Qt——动态库的创建和使用


    一、动态库是什么

    很多人写程序的人都见过.lib和.dll文件,对动态库也略有耳闻。

    生成动态库后可以得到两个文件,后缀名分别是.lib以及.dll。

    简而言之,.lib称为导入库,相当于头文件;.dll是动态库文件,相当于cpp,头文件中函数的具体实现。

    二、为什么使用动态库

    使用动态库的优点很多,可以减少可执行文件的大小、实现资源共享、便于维护。比如在MFC中调用Qt。

    关于动态库与静态库的更多详细介绍,可以参开这篇文章——c++静态库与动态库

    三、如何生成动态库

    1.一个简单qt界面

    我们的目标是创建这个界面的动态库,然后在其它程序中引入动态库,把该界面显示出来。

     程序结构如下:

    其中包括头文件、实现文件,以及界面ui文件,程序的主界面类DllTestWidget。

    2.创建工程,准备动态库导出

    a.创建完工程之后,设置工程属性。

    b.链接器-常规-输出文件,设置动态库文件.dll生成路径。

    c.链接器-高级-导入库,设置导入库文件.lib生成路径。

    上面这些只是设置生成路径,如果不修改的话,一般生成在默认路径win32文件夹下。

    3.编写程序,生成动态库

    #ifdef TESTWIDGET_LIB
    # define TESTWIDGET_EXPORT __declspec(dllexport)
    #else
    # define TESTWIDGET_EXPORT __declspec(dllimport)
    #endif

    如果生成的动态库,以后仍然供Qt使用,则直接加上上面的代码,导出该类即可;

    如果不希望包含ui文件,则将其放入.cpp文件中即可;

    如果生成的动态库以后在非Qt的环境下使用,则需要新建一个纯虚类,让Qt类继承它,实现其共有的虚函数即可。

    四、如何使用动态库

    1.配置属性-调试-环境 加入生成.dll动态库目录路径。

    2.C/C++-常规-附加包含目录 加入所需头文件.h路径。

    3.链接器-常规-附加库目录 增加生成的导入库.lib的路径。

    4.链接器-输入-附加依赖库 最后加入生成的导入库.lib文件。

    按照上面的设置,我们便可以在其它地方使用之前生成的动态库啦。 

  • 相关阅读:
    【软件测试】软件缺陷粗浅认识及白盒测试举例
    【软件测试】等价类划分
    【软件测试】对本门课程粗浅理解
    阿里云服务器本地ping超时,远程可以正常ping通
    不忘初心
    开源框架、控件、组件、插件记录
    Flex中窗口可随意拖拽功能实现
    初探数据类型相关问题
    [TSCTF-J 2021] 解题报告
    指针
  • 原文地址:https://www.cnblogs.com/hellovenus/p/5422648.html
Copyright © 2020-2023  润新知