• qt共享库概要


    qt shared library (共享库)

    是一个Qt层面的,对.so .dll的概括

    建立库,按照向导进行即可

    导出则是靠Q_DECL_EXPORT 和 Q_DECL_IMPORT。具体到工程中则是

    MYSHAREDLIB_EXPORT void foo();

    class MYSHAREDLIB_EXPORT MyClass... 

    (1)库的输出形式;a分别输出到debug和release目录中,b在debug版本周加d进行区别,推荐后者。

    a情况,不用进行任何特别设置即可;但client引用的LIB命令要按照不同条件设置

    win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/wxstyle/release -lwxstyle

    else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/wxstyle/debug -lwxstyle

    b情况,需要工程特别设置输出文件名字,形式和上述类似,具体格式可参考相关文档。

    这里推荐使用qtcreator工程中的 qtLibraryName宏,和qtcreatorLibrary.pri文件,可以快捷达成上述目的

    (2)库的使用

    使用方式就是在pro文件中功过LIBS宏添加连接,然后在代码中使用 。

    注:仅仅添加LIBS但不使用,是不会连接的,dependencywalker是看不见的。 

    (3)*= 还是+=

    对于LIBS命令,可以有几种表述方式

    【a】直接使用式,简单,但不推荐,原因是目录结构死板,无法跨平台,灵活性不足。 

    适用于无跨平台,由第三方提供的库。 

    LIBS += -ka.lib 

    LIBS += -l../debug/a.dll 

    【b】双重指定,推荐,对于跨平台一般都能应对,

    LIBS += -Lpath/dir -ldemodll

    此种写法把目录和文件名分开,目录可以共用,文件名的扩展名有qmake自行处理

    【c】复杂式,推荐,但如果没这方面需求可以不用

    适用于有qt生成的dll,如果有跨平台需要更是推荐 

    LIBS += -Lpath/dir

    LIBS *= -ldemodll

    动态链接库的pro中,如果使用VERSION,qmake会在文件名后自动加上其主版本号。

    该方法在次情况下仍能正确工作,为qtcreator采用。 

    但要忍受库后面有0,1,2,3等数字

    (对与app无效,而且如果在app中增加,会导致无法找到lib) 

    在动态链接库中增加

    VERSION = 1.2.3

    CONFIG += create_prl

    对于静态库你需要的是

    CONFIG += link_prl

    经过上述设置之后,

    a,dll中会自动带有version信息,并且dll的文件名会自动添加主版本号(包括0)

    b,app会自动链接到不同版本的dll 。

    c,避免dll-hell 

    注意:如果不加CONFIG命令,可能会出现无法找到dll的情况。 对于TEMPLATE=app的工程,会自动增加CONFIG+= link_prl

    参考 http://www.qtcn.org/bbs/apps.php?q=diary&uid=96534&a=detail&did=492 

    http://blog.csdn.net/dbzhang800/article/details/6348432 

  • 相关阅读:
    js判断网页是否加载完毕 包括图片
    文本框只能输入数字,输入其他自动过滤 几种方法
    pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
    nodejs微信公众号快速开发|自定义关键字回复
    Putty使用ssh方式登录服务器
    什么是Q Learning?
    使用python显示当前系统中的所有进程并关闭某一进程
    树莓派3搭建低成本NAS实现文件共享
    Fortran变量的定义和声明新写法
    Fortran中将多个文件进行编译运行的方法
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/2661777.html
Copyright © 2020-2023  润新知