资源描述:
《qt编译控制之c库》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Qt编译、生成、调用库文件一、生成Pro文件QT中的pro文件的编写我们在编译QT的T程的时候,一般都会iJLqmtikeD动生成,但有时我们潘要定制我们的丁-椏,邨么就必须改Spru义件。要自己全部Spro文件乂有点麻烦,所以,一股都是先运行qjtifcikeproject宋生成基本的pro义件。例如你舍一个I:程目录为backup,靡么在这个目录下就会生成backup,pro文件c对一般的丁.程,我们R浠耍修改儿个基本的常用的选项,下向说说怎么修改。假设我们有个目录,名宇为backup:下面有a.h,a.cpp,b.h,b.cpp,ma
2、in,epp等文件9"Pt先我们可以在backup目录下运行quiakeproject也成backup,pro义件a二、生成Makefile文件(mingw32-make,mingw32-makerelease)Mingw的make工具好像不叫Make,而是mingw32-make)一般,我们+会在我们的
3、:权里直接編译,这忏的话,工杩比较乱,我们可以在backupN录下—个目录,为bakcupbuild目录,我们在这个目录下编详,这杼其他的临时义件就在这个目录下,这杼我ffj的I:程看起來就不会郯么乱我们进入bakeupbuild目录,然
4、后运行qrnakeoMakefile../bakeup.pro这样我們就在”'l前目录下生成f一个Henle。在达个目录下执行make就可以生成我们的abebaekup可执行程序了三、生成库文件说明:vs200x生成的是气lib^D*.dH,(nisvc)mingw生成的是*.8和*.dll,(mingw),但mingw中可以调用vs200*中生成的*.lib和*.dll,且*.lib和*.3也可以相互转换(reimp)lib是由lib.exe把*.obj生成的lib。a是由mingw.exe把.o生成.aGCC和VC都使用COFF格式,所
5、以VC屮的.obj.lib与gcc用的.o.a是一样的(在WINDOWS下),两种静态库*.lib/*.a可以相互转换,使用reimp和dlltool进入emd下cdc:mysqlIiboptreimp-dlibmysql.libdlltool-k-dlibmysql.def-1libmysql.a只是扩展名不一样,通常你只要改一下名称就OK啦!不过有些库不行,因为库中的代码可能会用到一些编译器专有的特性,用VC做的.lib可能在gcc下没法通过编译(缺少符号),反之亦然。1、静态库。.a生成及应用一.静态库的生成1.测试目录:lib
6、2.源码文件名:mywindow.h,mywindow.cpp,类MyWindow继承于QPushButton,并将文字设罝力"I'minclassMyWindow";3.编写项目文件:mywindow.pro注意两点:TEMPLATE=libCONFIG+=staticlib4.生成Makefile:qmake5.编译生成静态库libmywindow.amake二.静态库的使用1.测试目录:test1.将mywindow.h与libmywindow.a拷贝至testM录下2.编写main.cpp,包含头文件mywindow.h,并调用My
7、Window类3.编写项目文件:test.pro注意加上痄路径与痄文件名:LIBS+=-L./-Imywindow4.生成Makefile:qmake5.编译:make6.运行:./test2、动态共享库。.dll生成及应用如果你打开一些Windows应用程序的目录,你会发现冇很多程序的exe文件都很小,大约几百K的样子,并且0录中不仅仅只有一个exe文件,还包含着一火堆dll文件。这些dll其实就是一些井亨库,所谓共享库,其劣就是一些动态链接库,能够由程序在运行吋进行动态加载的库。既然说是共享,那就是说,这些库不仅仅A己的程序可以使用,并
8、且其他程序也可以使用,例如某些通用算法。如果你发布一下自己编写的Qt程序,也会看到很多系统的共享库,就是那些QtGui.dll之类的东西。或许你会说,我写的程序没冇同其他应川共亨的庳,就不需耍这些了吧!其实不然。因力共亨庳的一个好处足可以动态加载,也就是说,如果你需要升级程序,那么就要简单的替换棹这个dll就好了,不需要要求用户重新安装全部文件。当然,这些dll也是有缺点的:动态加载的东西肯定会比静态编译的东西效率低一些。不过在现在的硬件环境卞,这点性能损失已经可以忽略不计了。今天我们耍说的就是如何用Qt创建共卒库代码。我们还是使用QtCr
9、eator。在创建工程的吋候,我们选择下曲的C++Library一项,然后点击OK。在接下来的对诏框屮,有一个下拉列表,分别是SharedLibrary(A:亨库),Static