Qt 静态链接库的生成及使用 【附加动态链接库】 转自百度空间 Ayuyuan


  

2013/1/4

      今天同事向我要我的程序的链接库,我很无语,因为手头工作很忙,下午头又晕,还是硬着头皮弄吧,一开始对链接库有一点点了解,但是自己没有做过,生成了dll文件总是测试出错,现在搞定了,记录下来


生成静态链接库修改pro文件

            TEMPLATE = lib       //应用程序是app

            CONFIG   += staticlib


然后编译 会弹出对话框   Executable For Debug Session对话框     我表示一开始我对于这个对话框很是迷茫,后来查资料才知道是:

            这个告诉你,DLL已经编译好了,要你选用哪个应用来调用!!



接着就到本程序的Debug文件夹下生成了一个: xx.lib文件       这就是生成的库文件


使用链接库:  同样也要先修改pro文件       

                         #Input下面加入:        LIBS +=./debug/xx.lib                          


然后把xx.lib复制到使用程序的debug文件里       //上面的路径和你的lib文件将放哪里一定要一致


接着就把你的库程序的头文件复制到使用该库的程序里   就像一般的头文件一样使用


最后在程序中加入如下代码:

     程序中:加入    #include"xx.h"     //对于库的头文件


这样在本程序中就可以使用库里的类等等,,



值得注意的是:如果你的库是包含了很多个文件,记得把所有的头文件都包含到本使用的程序里,以及该库文件所使用到的其他的链接库也一样带着


 

 

 

 2013/1/7

【附加】

经过好久的琢磨以及问老大们终于把动态链接库也搞定了,动态链接库如下

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

     大致步骤和静态链接库一样,pro文件修改如下:

               TEMPLATE = lib       //应用程序是app

       最关键的是链接库的导出,  头文件中加入如下导出定义     

                       #ifndef     XX_DLL 
                  #define    XX_DLL     Q_DECL_EXPORT
                  #else
                  #define    XX_DLL      Q_DECL_IMPORT
                  #endif

             然后在类名前加入:XX_DLL   例如:class XX_DLL XX

编译即可得到:lib 和  dll文件  

 

 

使用的时候:头文件中不仅要加入使用的库的头文件  还要加入导出的预定义 #define    XX_DLL

 

 

 

 

[             动态与静态链接库的共同点是资源的共享             ] 

 

动态链接库与静态链接库的区别:

       动态链接库是在加入的程序中动态的加入链接库中的东西,即在运行时通过lib文件动态跳转指令实现对exe文件中加入链接库中的东西(lib文件的作用主要是跳转,没有lib文件别人无法使用你的动态链接库),优点:使exe文件小,可以调用很多链接库的东西,更换链接库灵活,缺点:丢失了dll或者没有dll无法运行

 

       静态链接库是把链接库的资源加载到应用程序中,这样生成的exe文件比较臃肿相对于动态链接库而言,但不容易出错,例如dll丢失了的情况,缺点:更换链接库不灵活,得重新编译

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值