Qt創(chuàng)建DLL與exe交互_第1頁(yè)
Qt創(chuàng)建DLL與exe交互_第2頁(yè)
Qt創(chuàng)建DLL與exe交互_第3頁(yè)
Qt創(chuàng)建DLL與exe交互_第4頁(yè)
Qt創(chuàng)建DLL與exe交互_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Qt創(chuàng)建DLL與Exe交互這倆天研究下qt下Dll。%KievProjectChooseatappL&le:Qt匚卄FrojectDtkerTfojecPro4心丈r&niV*i-si:-tlCarstrolZustonQNLEtaasion.PLueiriEnyptyQtProj-aciIrriportEkistmgProject右C44litrorFL.sdoapeke.ThisctlBea:ed.tocreate:gsltufadC44liforueqvlihQPlijqillL口ElcLei:gd.t-iJiLiine(plugir!=)耳話hixidnr5io.-l.icC44lib

2、raryfaruswithanothefprojecta.1liriktLn首先我們創(chuàng)建一個(gè)庫(kù)的工程。選擇OtherProject-C+LibraryNext后進(jìn)入選擇庫(kù)類型界面,默認(rèn)是“抄遼話”。在紅色區(qū)域更改項(xiàng)目名稱。下個(gè)界面選擇編譯器,直接Next默認(rèn)選擇的是QtCore,如果你的Dll有圖形界面,則需要QtGui,需要訪問(wèn)數(shù)據(jù)庫(kù)QtSql,依次類推。當(dāng)然,創(chuàng)建通用的庫(kù),就不需要選擇了。下個(gè)界面直接Next,這樣工程就創(chuàng)建成功了。但是個(gè)人建議吧這里默認(rèn)生成的頭文件更改一下。然后再加一個(gè)同名的cpp改后頭文件増加cpp文件在編寫之前我們應(yīng)該看以下.pro文件以確認(rèn)我們的工程是否正確ITiL

3、R&ETUBermanagerTEMPIJkTE=Lib(DESTDIR./test-build-desktop/debug/DEF工HE日斗=USERHAKSER工工ERAjT亍SOURCES十=usermazia_ger.cppluserglobal-cppHEADERS+=hlusergloba.1-h綠色區(qū)域:提供的是項(xiàng)目名稱也是Dll生成后的名字。藍(lán)色區(qū)域:說(shuō)明了生成的是庫(kù)文件,而非.Exe文件紅色區(qū)域:給定了庫(kù)生成的目錄?;疑珔^(qū)域:給定了外部宏定義,這里定義的是庫(kù)德宏紫色區(qū)域:是庫(kù)的依賴文件。首先我們應(yīng)該編寫對(duì)外接口。即luserglobal.h#lfzidefZUSERG1OEA

4、i_H#defIneIUSERG1OEAi_H#inc.lude#ifdefined(USERMANAGERIBRARY)defineUSERHANAGERSH2kJLED_EXPORTQ_DECL_EXPtRTelsedeEineUSERMaNA(5ERSIiaJLED_EXFORTQ_DECL_IMPORT”復(fù)制出來(lái)因?yàn)槲椅覀儠?huì)看到這樣幾句,不要管他把“們,寫庫(kù)函數(shù)需要用到。然后,我們?cè)搶懳覀兊慕涌诹?。寫接口的時(shí)候要按照“復(fù)用”,“需求”,“封裝”3個(gè)特性進(jìn)行封裝接口。復(fù)用:指的是你寫的接口不是針對(duì)某一個(gè)工程,而是針對(duì)某一類功能而進(jìn)行封裝。需求:寫出來(lái)的接口必須能夠滿足,使用DLL的需求,

5、提供的功能要少,但是要全。封裝:這個(gè)封裝并不是Dll自帶的封裝特性,而是在寫接口的時(shí)候要注意,不要把Dll里的成員提供出去。而只是提供對(duì)應(yīng)功能。(這里說(shuō)一下,提供一個(gè)成員,還不如寫一個(gè)類來(lái)的方便,做DLl的意義就沒有了。)好了開始寫我們的接口吧。第一,我們要確認(rèn),對(duì)DLL的需求。是否可以操作,DLL是否需要通知給調(diào)用者。第二,我們要確認(rèn),我們的DLL屬于的類型,比如界面DLL,功能DLL等等。第三,我們的DLL,有幾個(gè)默認(rèn)的庫(kù)函數(shù)。(建議越少越好)就啰嗦到這里了。開始吧。我的DLL功能顯示一個(gè)界面所以我給預(yù)留的操作接口是(下圖)14HclassIUserControl151Cpublic;17

6、virtualvoidBhowWindow()=0;ievj.irtua.1toidcloseWj-iudow()=0;19Tirtua.1voidhideWindow()=0;20CT_本著見名知意的原則,要是看不懂就別繼續(xù)看了。然后需要用我的DLL通知調(diào)用者,我的處理狀態(tài),所以需要?jiǎng)?chuàng)建一個(gè)通告接口。方法同上。這樣我們的接口預(yù)留的就可以了。(對(duì)于我的程序足夠了)在這里需要說(shuō)一下,接口是根據(jù)的你的程序需求而定,并非統(tǒng)一規(guī)格。做完這些,我們就可以,把一個(gè)簡(jiǎn)單庫(kù)函數(shù)添加進(jìn)來(lái)了Elextern81C11rJnERMANAGERSFr_ESPORTTUcrCorFt-qIr-.Vsrt-+y*rKr.

7、k:+vlib;根據(jù)格式,返回操作接口,接受通告接口。把對(duì)應(yīng)的功能寫到對(duì)應(yīng)的文件內(nèi),如果功能多,可是適量添加文件。這里我實(shí)現(xiàn)了一個(gè)Dialog,并讓繼承了操作接口,方便調(diào)用DLL者操作。在庫(kù)頭文件,對(duì)應(yīng)的Cpp中實(shí)現(xiàn)庫(kù)接口函數(shù)。12345#inc丄uc!eInserglobal.h#ineludeusermajiager_hIUserControl*GreateUser(lUserNotify*pNotifQWidget*p)Userznna.gex*斤皿newUsermana.ger(p);1Q91011pNntify-children(IU3erNotify:OVEZR);Treturn(

8、ITJseirControl1in;以上內(nèi)容是基礎(chǔ)框架,按照這個(gè)框架寫,寫出來(lái)的就是好DLL。好了DLL完成了。我們?cè)趯憘€(gè)測(cè)試程序吧。-啦tE弓ttest,pru一HeadersFIuserglobal,h-L.|dialog,hSrnrrcPEIdi:=Lli!ig.epp11rn=iri.epp包涵DLL的頭文件。然后再.pro中添加IjIBS+=./debug/tLSeirmajia.g已r-dl丄指定號(hào)庫(kù)路徑D8810111213141516171819202122#endi/DHfiiOGHJtlfndefDIA1OG_JLtdeizie4tinclude#includelaserjlobal.h.eclassD-lalcg:publicQI?La.log,publicZUserNotifyQ_OBkTCTpublzLC:Dia.logwidgetparen.t=0);voidchildren(intw);Dialog();publicslots:toidsh.owMyWj_ndow();private:QWidget*ri_Widget;;。h文件內(nèi)容繼承通告接口接受通告信息12|345H78|9io|1112L31

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論