Qt创建DLL与exe交互_第1页
Qt创建DLL与exe交互_第2页
Qt创建DLL与exe交互_第3页
Qt创建DLL与exe交互_第4页
Qt创建DLL与exe交互_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Qt创建DLL与Exe交互这俩天研究下qt下Dll。% Npv Project"UliQuoose 迅 tenplat t.3t C+D tnejDesi pttr Wide4Pr d电 cA £r >n Vofei a九 C er. tr &li 1 Jjiipvrl&NL DizictuiyCustofi BBL Et«uloA riudriEmpty U t Pro j « 2 iO Imt £ri stinj; I rejectCTO色*唱g >g =44- librmr尹 $轉。鼻 也襄 Th1! 電 Be

2、 ustd to cr-t4<-e:1 0 skurd O*Em? uco vl thQPlviginlciadex: wd rwiin-e (Tl$iTis)* 0<?r sialic 44 1 its-ary f?rwith. arotiLeE- pk<ajiect at linkLine首先我们创建一个库的工程。选择Other Project -> C+ Library曹呼屮叱巴,”。在红色区域更改项目名称。Next后进入选择库类型界面,默认是 下个界面选择编译器,直接 Next默认选择的是 QtCore,如果你的Dll有图形界面,则需要 QtGui,需要访问数据

3、库 QtSql,依 次类推。当然,创建通用的库,就不需要选择了。下个界面直接Next ,这样工程就创建成功了。白imt-i 1 edunt i flea, pr-話“辽 h | uiernunaesr. h白J Scrarcw4userm anagar. cpj但是个人建议吧这里默认生成的头文件更改一下。然后再加一个同名的cppS'teus era mcer nsennanacer. proJte ad«rsm £3I rummrglobal一 h 可erm anaer 一 K-Sources改后头文件増加卬P文件在编写之前我们应该看以下.pro文件以确认我们的工程

4、是否正确TARGET usermanagerTEMPLATE = libDESTDTR . ./test-build.da sk top/debug/DEFINES += U3ERMANAGER LIBRARY ISOURCES 十=uaermfliiager. cpp luserglobal + cppH£LZLL>E:RS += U3ernLSHS.ger h Iuaerglobal.h绿色区域:提供的是项目名称也是Dll生成后的名字。蓝色区域:说明了生成的是库文件,而非.Exe文件红色区域:给定了库生成的目录。灰色区域:给定了外部宏定义,这里定义的是库德宏。紫色区域:是库

5、的依赖文件。首先我们应该编写对外接口。即 luserglobal.h#ifzidef IU S E RGLQB AIi_Hdefine IUSERGIiQBAL_H#include <t-Core/ q;gloha_L - h>#if defined (USERMAHAGERLIBRARY)# d.e£ir.e UgERMANAGERSHAaED EXF ORT Q_DE CL EXPORT eiae# define V5ERhl£AGERSliARED_EKFORT Q_PEORT #end.iE我们会看到这样几句,不要管他把USERMANAGERSHARED

6、 EXPORT复制出来因为我们,写库函数需要用到。然后,我们该写我们的接口了。写接口的时候要按照“复用”,“需求”,“封装” 3个特性进行封装接口。复用:指的是你写的接口不是针对某一个工程,而是针对某一类功能而进行封装。需求:写出来的接口必须能够满足,使用DLL的需求,提供的功能要少,但是要全。Dll封装:这个封装并不是Dll自带的封装特性,而是在写接口的时候要注意,不要把里的成员提供出去。而只是提供对应功能。(这里说一下,提供一个成员,还不如写个类来的方便,做 DLl的 意义就没有了。)好了开始写我们的接口吧。第一,我们要确认,对 DLL的需求。是否可以操作,DLL是否需要通知给调用者。第二

7、,我们要确认,我们的 DLL属于的类型,比如界面 DLL,功能DLL等等。 第三,我们的DLL,有几个默认的库函数。(建议越少越好)就啰嗦到这里了。开始吧。我的DLL功能显示一个界面所以我给预留的操作接口是(下图)1511718192014 B class lU36rCojitrolpublic:void showWindow (匚; vir七口曰丄 void closeWindow( virtual void hidewindow()=0;2本着见名知意的原则,要是看不懂就别继续看了。这样我们的接口预留的就可以了。(对于我的程序足够了)在这里需要说一下,接口是根据的你的程序需求而定,并非统一

8、规格。做完这些,我们就可以,把一个简单库函数添加进来了J1 extern22 33 aMAWArERaHARBp_UXFORT TUserControL " GreateUser(TUscrWntify 土 pNotify-r)34 -根据格式,返回操作接口,接受通告接口。接下来,实现我们的DLL功能m er an stiveruse rm ana ger, pro- 'j SorurcezI Hmr 裂obal,epp把对应的功能写到对应的文件内,如果功能多,可是适量添加文件。曰| Ius*rglftbal. h| J userm anager. h- r S o ur c

9、 e s I7? In話巳fpFusermanager. cp®在库头文件,对应的 Cpp中实现库接口函数。1011include wIuserglcibal.h" tinclude "usermanager.h"lUseTrCoiitrol* CreatetJser (lUseirNotif y *pNotl fyr 亠口 = 口会的 Uaexzn&n&r (p);pNatif y->ehild.,en (ITJserNotif y: ! OVEH):retu rn (IUserContn;以上内容是基础框架,按照这个框架写,写出

10、来的就是好DLL。好了 DLL完成了。我们在写个测试程序吧。S 血 t«stTj | In詐rglobal, h di slog, hl 玄 5pureesI di O o p. cppm 鱼5. epp包涵DLL的头文件。d启壬 DIAWG_H define#include <QtGui/QDialog>#include "Iuserg'lobal .h."u fi9101112131415117IBIS202122class Dialog : public QDialogrpublic lUaerNotifyQOBCTECT

11、public:Qi gleg (QWj.dg-e't parent = 0 ); void children(int w);-wDialog ();public slot吕:void showHyWindow();private:QWidge七in_Iffidge-t;; _二"土Lf / DJAlrOS HI。h文件内容 继承通告接口接受通告信息#includ« "dialog,hn# include <QDebu g>#include <QPushBut'ton>Dialog:iDialog(QWidget parent): QDralog(parent)QPushBu tto口 *bt/n = new QPushButton (thi);connec七(btn t SIGNAL (clic ked ( ) this t SLOT1 (showMyWindow (); resize(800f 600);P-2Dialog:Dialog()b.60.5E0Blvoid Dialog: :children (in't w)if (w = TUserNotify: :OTER) IqDebug ()«"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论