版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Qt創(chuàng)建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尹 $轉(zhuǎn)。鼻 也襄 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首先我們創(chuàng)建一個(gè)庫的工程。選擇Other Project -> C+ Library曹呼屮叱巴,”。在紅色區(qū)域更改項(xiàng)目名稱。Next后進(jìn)入選擇庫類型界面,默認(rèn)是 下個(gè)界面選擇編譯器,直接 Next默認(rèn)選擇的是 QtCore,如果你的Dll有圖形界面,則需要 QtGui,需要訪問數(shù)據(jù)
3、庫 QtSql,依 次類推。當(dāng)然,創(chuàng)建通用的庫,就不需要選擇了。下個(gè)界面直接Next ,這樣工程就創(chuàng)建成功了。白imt-i 1 edunt i flea, pr-話“遼 h | uiernunaesr. h白J Scrarcw4userm anagar. cpj但是個(gè)人建議吧這里默認(rèn)生成的頭文件更改一下。然后再加一個(gè)同名的cppS'teus era mcer nsennanacer. proJte ad«rsm £3I rummrglobal一 h 可erm anaer 一 K-Sources改后頭文件増加卬P文件在編寫之前我們應(yīng)該看以下.pro文件以確認(rèn)我們的工程
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綠色區(qū)域:提供的是項(xiàng)目名稱也是Dll生成后的名字。藍(lán)色區(qū)域:說明了生成的是庫文件,而非.Exe文件紅色區(qū)域:給定了庫生成的目錄?;疑珔^(qū)域:給定了外部宏定義,這里定義的是庫德宏。紫色區(qū)域:是庫
5、的依賴文件。首先我們應(yīng)該編寫對(duì)外接口。即 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我們會(huì)看到這樣幾句,不要管他把USERMANAGERSHARED
6、 EXPORT復(fù)制出來因?yàn)槲覀?,寫庫函?shù)需要用到。然后,我們?cè)搶懳覀兊慕涌诹?。寫接口的時(shí)候要按照“復(fù)用”,“需求”,“封裝” 3個(gè)特性進(jìn)行封裝接口。復(fù)用:指的是你寫的接口不是針對(duì)某一個(gè)工程,而是針對(duì)某一類功能而進(jìn)行封裝。需求:寫出來的接口必須能夠滿足,使用DLL的需求,提供的功能要少,但是要全。Dll封裝:這個(gè)封裝并不是Dll自帶的封裝特性,而是在寫接口的時(shí)候要注意,不要把里的成員提供出去。而只是提供對(duì)應(yīng)功能。(這里說一下,提供一個(gè)成員,還不如寫個(gè)類來的方便,做 DLl的 意義就沒有了。)好了開始寫我們的接口吧。第一,我們要確認(rèn),對(duì) DLL的需求。是否可以操作,DLL是否需要通知給調(diào)用者。第二
7、,我們要確認(rèn),我們的 DLL屬于的類型,比如界面 DLL,功能DLL等等。 第三,我們的DLL,有幾個(gè)默認(rèn)的庫函數(shù)。(建議越少越好)就啰嗦到這里了。開始吧。我的DLL功能顯示一個(gè)界面所以我給預(yù)留的操作接口是(下圖)1511718192014 B class lU36rCojitrolpublic:void showWindow (匚; vir七口曰丄 void closeWindow( virtual void hidewindow()=0;2本著見名知意的原則,要是看不懂就別繼續(xù)看了。這樣我們的接口預(yù)留的就可以了。(對(duì)于我的程序足夠了)在這里需要說一下,接口是根據(jù)的你的程序需求而定,并非統(tǒng)一
8、規(guī)格。做完這些,我們就可以,把一個(gè)簡單庫函數(shù)添加進(jìn)來了J1 extern22 33 aMAWArERaHARBp_UXFORT TUserControL " GreateUser(TUscrWntify 土 pNotify-r)34 -根據(jù)格式,返回操作接口,接受通告接口。接下來,實(shí)現(xiàn)我們的DLL功能m er an stiveruse rm ana ger, pro- 'j SorurcezI Hmr 裂obal,epp把對(duì)應(yīng)的功能寫到對(duì)應(yīng)的文件內(nèi),如果功能多,可是適量添加文件。曰| Ius*rglftbal. h| J userm anager. h- r S o ur c
9、 e s I7? In話巳fpFusermanager. cp®在庫頭文件,對(duì)應(yīng)的 Cpp中實(shí)現(xiàn)庫接口函數(shù)。1011include wIuserglcibal.h" tinclude "usermanager.h"lUseTrCoiitrol* CreatetJser (lUseirNotif y *pNotl fyr 亠口 = 口會(huì)的 Uaexzn&n&r (p);pNatif y->ehild.,en (ITJserNotif y: ! OVEH):retu rn (IUserContn;以上內(nèi)容是基礎(chǔ)框架,按照這個(gè)框架寫,寫出
10、來的就是好DLL。好了 DLL完成了。我們?cè)趯憘€(gè)測試程序吧。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文件內(nèi)容 繼承通告接口接受通告信息#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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沙石料注資協(xié)議書
- 沒認(rèn)識(shí)寫合同范本
- 油卡交易合同范本
- 油漆人工合同范本
- 與女兒的協(xié)議書
- 2025年中國誠通控股集團(tuán)有限公司總部公開招聘5人備考題庫完整答案詳解
- 發(fā)展協(xié)議書范本
- 2025年亞東縣公開招聘專職網(wǎng)格員的備考題庫參考答案詳解
- 2026年建筑余料處理合同
- 2025年中國鐵路蘭州局集團(tuán)有限公司招聘普通高校畢業(yè)生468人備考題庫(一)參考答案詳解
- 醫(yī)療人力資源效能評(píng)價(jià)指標(biāo)體系構(gòu)建
- 2025國際胰腺病學(xué)會(huì)急性胰腺炎修訂指南解讀課件
- 雨課堂學(xué)堂云在線《中國馬克思主義與當(dāng)代(北京化工大學(xué) )》單元測試考核答案
- 貴州省貴陽市2025-2026學(xué)年高三上學(xué)期11月質(zhì)量監(jiān)測化學(xué)試卷(含答案)
- 機(jī)場設(shè)備維修與保養(yǎng)操作手冊(cè)
- 動(dòng)脈穿刺法教案(2025-2026學(xué)年)
- 2025年《肌肉骨骼康復(fù)學(xué)》期末考試復(fù)習(xí)參考題庫(含答案)
- 工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 2025年中國工業(yè)級(jí)小蘇打行業(yè)市場分析及投資價(jià)值評(píng)估前景預(yù)測報(bào)告
- 家具生產(chǎn)工藝流程標(biāo)準(zhǔn)手冊(cè)
- 消防新隊(duì)員安全培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論