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文件。

 

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

posted @ 2016-04-22 20:22  去冰三分糖  阅读(10021)  评论(1编辑  收藏  举报