Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc

Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc

ID:56925412

大?。?40.05 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2020-07-24

Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc_第1頁(yè)
Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc_第2頁(yè)
Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc_第3頁(yè)
Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc_第4頁(yè)
Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc_第5頁(yè)
資源描述:

《Linux高級(jí)編程實(shí)驗(yàn)實(shí)驗(yàn)4報(bào)告材料.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、電子科技大學(xué)實(shí)驗(yàn)報(bào)告學(xué)生:學(xué)號(hào):指導(dǎo)教師:林實(shí)驗(yàn)地點(diǎn):清水河主樓A2-412實(shí)驗(yàn)時(shí)間:一、實(shí)驗(yàn)室名稱(chēng):Linux環(huán)境高級(jí)編程實(shí)驗(yàn)室二、實(shí)驗(yàn)項(xiàng)目名稱(chēng):插件框架實(shí)驗(yàn)三、實(shí)驗(yàn)學(xué)時(shí):4學(xué)時(shí)四、實(shí)驗(yàn)?zāi)康模簩?shí)踐Linux環(huán)境下插件框架的開(kāi)發(fā)。學(xué)習(xí)并掌握插件的工作原理。五、實(shí)驗(yàn)容:l1、使用動(dòng)態(tài)庫(kù)實(shí)現(xiàn)打印功能開(kāi)發(fā)一個(gè)程序,向屏幕打印“HelloWorld”;在不重新編譯原程序的前提下,將打印的文字改為“HelloChina”。l2、使用動(dòng)態(tài)庫(kù)實(shí)現(xiàn)自定義打印功能同時(shí)要打印“HelloWorld”,打印“Hello

2、China”,甚至同時(shí)打印未來(lái)才會(huì)增加的其他打印信息。打印未來(lái)的這些信息,也不能重新編譯原程序。l3、一次只調(diào)用一種功能通過(guò)命令行方式:./a.outhelp,輸出所有插件實(shí)現(xiàn)的功能ID,以及該功能ID對(duì)應(yīng)的功能描述(參考代碼3)通過(guò)命令行方式:./a.outFuncID,調(diào)用具體打印功能(每個(gè)插件導(dǎo)出GetID接口)(參考代碼4)l4、導(dǎo)出函數(shù)都放在一個(gè)類(lèi)中在版本3中,插件導(dǎo)出了Print、GetID、Help三個(gè)函數(shù),主程序需要使用多個(gè)容器分別保存這些函數(shù)地址。在復(fù)雜的業(yè)務(wù)邏輯中,導(dǎo)出的函數(shù)可

3、能更多,若還按照版本3的方式,代碼維護(hù)性不佳。將三個(gè)導(dǎo)出函數(shù)都放在一個(gè)類(lèi)中,讓插件外部獲取該類(lèi)的對(duì)象六、實(shí)驗(yàn)步驟:版本1程序代碼如圖1.1、圖1.2、圖1.3所示(程序是在Linux圖形界面截取的,本人的Ubuntu在字符界面無(wú)法顯示中文注釋?zhuān)簣D1.1功能函數(shù)圖1.2helloworld函數(shù)圖1.3主函數(shù)首先,使用命令#g++-fpic–shared–ofunction.sohelloworld.cppfunction.cpp將helloworld.cpp和function.cpp編寫(xiě)成動(dòng)態(tài)庫(kù)f

4、unction.so。如圖1.4所示:圖1.4動(dòng)態(tài)庫(kù)的編寫(xiě)然后,再進(jìn)行動(dòng)態(tài)庫(kù)使用者的編譯,命令是#g++-omainmain.cpp–ldl,如圖1.5所示。圖1.5動(dòng)態(tài)庫(kù)使用者圖中顯示了兩次運(yùn)行結(jié)果,但是第一次是helloworld,第二次是hellobaby。這很好地體現(xiàn)的動(dòng)態(tài)的特性。版本2代碼如下:圖2.1main圖2.2helloyanyumin函數(shù)圖2.3helloYANYUMIN函數(shù)該函數(shù)實(shí)現(xiàn)了,同時(shí)要打印“Helloyanyumin”,打印“HelloYANYUMIN”,沒(méi)有重新編譯

5、原程序。運(yùn)行結(jié)果如下圖2.4所示。圖2.4運(yùn)行結(jié)果版本3-2程序代碼如下:圖3.1main.cpp圖3.2function1.cpp圖3.3function.cpp此外,還有CPluginController.cpp和CPluginEnumerator.cpp,里面存放的都是main函數(shù)調(diào)用的子函數(shù),在main里有注釋?zhuān)员悴辉儋樖觥_\(yùn)行結(jié)果如下:圖3.4運(yùn)行過(guò)程與結(jié)果版本4主要程序代碼如下:圖4.1main.cpp圖4.2IPrintPlugin.cpp圖4.3function1.cpp圖4.

6、4function.cpp這種方式采用將三個(gè)導(dǎo)出函數(shù)都放在一個(gè)類(lèi)中,讓插件外部獲取該類(lèi)的對(duì)象。編譯運(yùn)行結(jié)果如下:圖4.5過(guò)程及結(jié)果七、總結(jié)及心得體會(huì):本次實(shí)驗(yàn)主要是學(xué)習(xí)插件的開(kāi)發(fā)和使用,通過(guò)不同的思想對(duì)不同插件進(jìn)行編程,打開(kāi)了我的思維,增加了我對(duì)插件編程的靈活性的掌控。八、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議:這次做實(shí)驗(yàn)的過(guò)程有點(diǎn)緊湊,實(shí)驗(yàn)代碼有的部分不是很理解(相關(guān)知識(shí)掌握不清晰),建議老師能在上堂課結(jié)束后提示一下本堂課的主要容,便于我們課后查閱提前準(zhǔn)備??偟膩?lái)說(shuō),收獲很大。報(bào)告評(píng)分:指導(dǎo)教師簽字

7、:

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。