版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(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)該編寫對外接口。即 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復(fù)制出來因?yàn)槲覀?,寫庫函?shù)需要用到。然后,我們該寫我們的接口了。寫接口的時(shí)候要按照“復(fù)用”,“需求”,“封裝” 3個(gè)特性進(jìn)行封裝接口。復(fù)用:指的是你寫的接口不是針對某一個(gè)工程,而是針對某一類功能而進(jìn)行封裝。需求:寫出來的接口必須能夠滿足,使用DLL的需求,提供的功能要少,但是要全。Dll封裝:這個(gè)封裝并不是Dll自帶的封裝特性,而是在寫接口的時(shí)候要注意,不要把里的成員提供出去。而只是提供對應(yīng)功能。(這里說一下,提供一個(gè)成員,還不如寫個(gè)類來的方便,做 DLl的 意義就沒有了。)好了開始寫我們的接口吧。第一,我們要確認(rèn),對 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ù)留的就可以了。(對于我的程序足夠了)在這里需要說一下,接口是根據(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把對應(yīng)的功能寫到對應(yīng)的文件內(nèi),如果功能多,可是適量添加文件。曰| Ius*rglftbal. h| J userm anager. h- r S o ur c
9、 e s I7? In話巳fpFusermanager. cp®在庫頭文件,對應(yīng)的 Cpp中實(shí)現(xiàn)庫接口函數(shù)。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;以上內(nèi)容是基礎(chǔ)框架,按照這個(gè)框架寫,寫出
10、來的就是好DLL。好了 DLL完成了。我們在寫個(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津市和平區(qū)匯文中學(xué)2024-2025學(xué)年八年級上學(xué)期期末考試物理試卷(含答案)
- 吉林省吉林市2024-2025學(xué)年高一上學(xué)期1月期末地理試題(含答案)
- 浙江省杭州蕭山2023-2024學(xué)年第二學(xué)期期中檢測卷 六年級下冊科學(xué)
- 上半年銷售工作總結(jié)
- 四年級數(shù)學(xué)(簡便運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案
- 2022年初級《銀行業(yè)法律法規(guī)與綜合能力》考試題庫(核心題版)
- 《創(chuàng)意案填寫說明》課件
- 2022《創(chuàng)新設(shè)計(jì)》高考?xì)v史江蘇專用二輪專題復(fù)習(xí):專題一-中外古代文明的演進(jìn)-專題提升練(一)
- 【名師一號】2021年新課標(biāo)版物理選修3-5-雙基限時(shí)練12-原子結(jié)構(gòu)
- 《典型案例分析圖》課件
- (新版)工業(yè)機(jī)器人系統(tǒng)操作員(三級)職業(yè)鑒定理論考試題庫(含答案)
- 食材配送服務(wù)方案(技術(shù)方案)
- 勞動技能實(shí)操指導(dǎo)(勞動教育)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 課件:《中華民族共同體概論》第一講 中華民族共同體基礎(chǔ)理論
- 2024-2025學(xué)年安徽省合肥市蜀山區(qū)數(shù)學(xué)四年級第一學(xué)期期末質(zhì)量檢測試題含解析
- nba球星喬丹課件
- 重慶三峰環(huán)境集團(tuán)股份有限公司招聘筆試題庫2024
- 中國式現(xiàn)代化為主題的論文3000字(1) (1)全文
- YB2防爆電機(jī)使用說明書
- 2024國家開放大學(xué)電大??啤东F醫(yī)基礎(chǔ)》期末試題及答案試卷號2776
- 廠區(qū)保潔服務(wù)投標(biāo)方案【2024版】技術(shù)方案
評論
0/150
提交評論