zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    NBU7.0 RMAN 异机恢复 not found in NetBackup catalog
    配置Apache支持PHP5
    【浅墨Unity3D Shader编程】之中的一个 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
    关于 rman duplicate from active database 搭建dataguard--系列一
    <html>
    hdu 3622 二分+2-sat
    解决duilib水平布局(HorizontalLayout)中控件位置计算错误的问题
    Android SqlDelight具体解释和Demo样例
    HBase总结(十一)hbase Java API 介绍及使用演示样例
    [置顶] MyEclipse显示中文界面,在线安装教程
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/2661777.html
Copyright © 2011-2022 走看看