如何用VC創(chuàng)建及調(diào)用DLL_第1頁(yè)
如何用VC創(chuàng)建及調(diào)用DLL_第2頁(yè)
如何用VC創(chuàng)建及調(diào)用DLL_第3頁(yè)
如何用VC創(chuàng)建及調(diào)用DLL_第4頁(yè)
如何用VC創(chuàng)建及調(diào)用DLL_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

個(gè)人收集整理-ZQ()一、前言自從微軟推出位地操作系統(tǒng)起,此后每種版本地操作系統(tǒng)都非常依賴(lài)于動(dòng)態(tài)鏈接地函數(shù)和數(shù)據(jù),實(shí)際上操作統(tǒng)中幾乎所有地內(nèi)容都由以一種或另外一種形式代表著,例如顯示地字體和圖標(biāo)存儲(chǔ)在中示桌面和處理用戶(hù)地輸入所需要地代碼被存儲(chǔ)在一個(gè)中編程所需要地大量地函數(shù)也被包含在中文來(lái)自于網(wǎng)絡(luò)搜索在操作系統(tǒng)中使用有很優(yōu)點(diǎn),最主要地一點(diǎn)是多個(gè)應(yīng)用程序、甚至是不同語(yǔ)言編寫(xiě)地應(yīng)用程序可以共享一個(gè)文件,真正實(shí)現(xiàn)了資共,大大縮小了應(yīng)程序地執(zhí)行代碼,更加有效地利用了內(nèi)存地一優(yōu)點(diǎn)是文件作為一個(gè)單獨(dú)地程序模塊性性,在軟件需要升級(jí)地時(shí)候開(kāi)人只需要修改相應(yīng)地文件就可以了且當(dāng)中地函數(shù)改變后,只要不是參數(shù)地改變程代碼并不需要重新編這在編程時(shí)十分有用,大大提高了軟件開(kāi)發(fā)和維護(hù)地效率文來(lái)自于網(wǎng)絡(luò)搜索既然那么重要以搞清楚什么是何操作系統(tǒng)中開(kāi)發(fā)使用是程序開(kāi)發(fā)人員不得不解決地一個(gè)問(wèn)題本針對(duì)這些問(wèn)題,通過(guò)一個(gè)簡(jiǎn)單地例子,即在一個(gè)中實(shí)現(xiàn)比較最大、最小整數(shù)這兩個(gè)簡(jiǎn)單函數(shù),全面地解析了在編環(huán)境下編程實(shí)現(xiàn)地過(guò)程,文章中所用到地程序代碼在系統(tǒng)、編譯環(huán)境下通過(guò)文來(lái)自于網(wǎng)絡(luò)搜索二、地概念是建立在客戶(hù)服務(wù)器通信地概念上含若干函數(shù)類(lèi)資源地庫(kù)文件函數(shù)和數(shù)據(jù)被存儲(chǔ)在一(務(wù)器上由一個(gè)或多個(gè)客戶(hù)導(dǎo)出而使用些客戶(hù)可以是應(yīng)用程序或者是其它地庫(kù)同于靜態(tài)庫(kù),在靜態(tài)庫(kù)情況下,函數(shù)和數(shù)據(jù)被編譯進(jìn)一個(gè)二進(jìn)制文件(通常擴(kuò)展名為,地譯器在處理程序代碼時(shí)將從靜態(tài)庫(kù)中恢復(fù)這些函數(shù)和數(shù)據(jù)并把他們和應(yīng)用程序中地其他模塊組合在一起生成可執(zhí)行文件.這個(gè)過(guò)程稱(chēng)為態(tài)鏈接"此時(shí)因?yàn)閼?yīng)用程序所需地全部?jī)?nèi)容都是從庫(kù)中復(fù)制了出來(lái),所以靜態(tài)庫(kù)本身并不需要與可執(zhí)行文件一起發(fā)行文檔來(lái)自于網(wǎng)絡(luò)搜索在動(dòng)態(tài)庫(kù)地情況下,有兩個(gè)文件,一個(gè)是引入庫(kù)()文件,一個(gè)是文件,引入庫(kù)文件包含被導(dǎo)出地函數(shù)地名稱(chēng)和位置,包含實(shí)際地函數(shù)和數(shù)據(jù),應(yīng)用程序使用文鏈接到所需要使用地文件庫(kù)中地函數(shù)和數(shù)據(jù)并不制到可執(zhí)行文件中此在應(yīng)用程序地可執(zhí)行文件中存放地不是被調(diào)用地函數(shù)代碼是中所要調(diào)用地函數(shù)地內(nèi)存地址樣一個(gè)或多個(gè)應(yīng)用程序運(yùn)行是再把程序代碼和被調(diào)用地函數(shù)代碼鏈接起來(lái),從而節(jié)省了內(nèi)存資源從面地說(shuō)明可以看出,和件必須隨應(yīng)用程序一起發(fā)行,否則應(yīng)用程序?qū)?huì)產(chǎn)生錯(cuò)文檔來(lái)自于網(wǎng)絡(luò)搜索微軟地支持種,它們分別是(非動(dòng)態(tài)庫(kù))(常規(guī))(擴(kuò)展):指地是不用地類(lèi)庫(kù)結(jié)構(gòu),直接用語(yǔ)言寫(xiě)地,其導(dǎo)出地函數(shù)是標(biāo)準(zhǔn)地接口,能被非或編寫(xiě)地應(yīng)用程序所調(diào).文來(lái)自于絡(luò)搜索:和述地一樣用庫(kù)編寫(xiě)地地一個(gè)明顯地特點(diǎn)是在源文件里有一個(gè)繼承地注意:此類(lèi)雖然從派生,但沒(méi)有消息循環(huán))被出地函數(shù)是函數(shù)、類(lèi)或者成員函數(shù)(注意不要把術(shù)語(yǔ)類(lèi)與地微軟基礎(chǔ)類(lèi)相混淆用常規(guī)地應(yīng)用程序不必是應(yīng)用程序要是能調(diào)用類(lèi)函數(shù)地應(yīng)用程序就可以,它們可以是在、、編譯環(huán)境下利用開(kāi)發(fā)應(yīng)用程文來(lái)自于網(wǎng)絡(luò)搜索常規(guī)又可細(xì)分成靜態(tài)鏈接到和動(dòng)態(tài)鏈接到上地,這兩種常規(guī)地區(qū)別將在下面介紹.與常規(guī)相16

個(gè)人收集整理-ZQ比使擴(kuò)展用于導(dǎo)出增強(qiáng)基礎(chǔ)類(lèi)地函數(shù)或子類(lèi)這種類(lèi)型地動(dòng)態(tài)鏈接庫(kù)可以用來(lái)輸出一個(gè)從所繼承下來(lái)地.文來(lái)于網(wǎng)絡(luò)搜索:擴(kuò)展是使用地動(dòng)態(tài)鏈接版本所創(chuàng)建地,并且它只被用類(lèi)庫(kù)所編寫(xiě)地應(yīng)用程序所調(diào)如你已經(jīng)創(chuàng)建了一個(gè)從地類(lèi)地派生類(lèi)用于創(chuàng)建一個(gè)新地工具欄了出這個(gè)類(lèi)你必須把它放到一個(gè)擴(kuò)展地.擴(kuò)和常規(guī)一樣,它沒(méi)有一個(gè)從繼承而來(lái)地類(lèi)地對(duì)象,所以,開(kāi)發(fā)人員必須在中地函數(shù)添加初始化代碼和結(jié)束代文來(lái)自于網(wǎng)絡(luò)搜索三、動(dòng)態(tài)鏈接庫(kù)地創(chuàng)建在開(kāi)發(fā)境下,打開(kāi)選項(xiàng),可選擇或來(lái)不同地方式來(lái)創(chuàng)建、、等同種類(lèi)地動(dòng)態(tài)鏈接庫(kù)文來(lái)自于網(wǎng)絡(luò)搜索.方創(chuàng)建動(dòng)鏈接庫(kù)每一個(gè)必須有一個(gè)入口點(diǎn),這就象我們用編寫(xiě)地應(yīng)用程序一樣,必須有一個(gè)函數(shù)一樣.在中是一個(gè)缺省地入口函數(shù)不要編寫(xiě)自己地入口函數(shù)這個(gè)缺省地入口函數(shù)就能使動(dòng)態(tài)鏈接庫(kù)被調(diào)用時(shí)得到正確地初始化.果應(yīng)用程序地需要分配額外地內(nèi)存或資源時(shí),或者說(shuō)需要對(duì)每個(gè)進(jìn)程或線程初始化和清除操作時(shí),需要在相應(yīng)地工程地文件中對(duì)數(shù)按照下面地格式書(shū)寫(xiě)文來(lái)自于網(wǎng)絡(luò)搜索({({:.......:.......:.......:.......};}文來(lái)自于網(wǎng)絡(luò)搜索參數(shù)中::是動(dòng)態(tài)庫(kù)被調(diào)用時(shí)所傳遞來(lái)地一個(gè)指向自己地句柄實(shí)上,它是指向段地一個(gè)選擇符;文檔來(lái)自于網(wǎng)絡(luò)搜索是個(gè)說(shuō)明動(dòng)態(tài)庫(kù)被調(diào)原因地志進(jìn)程或線程裝入或卸載動(dòng)態(tài)鏈接庫(kù)地時(shí)候操作系統(tǒng)調(diào)用入口函數(shù)并說(shuō)明動(dòng)態(tài)鏈庫(kù)被調(diào)用地原因所有地可能值為文檔來(lái)自于網(wǎng)絡(luò)搜索:進(jìn)程被調(diào)用:線程被調(diào)用:進(jìn)程被停止:線程被停止:為保留參.到此為止地口函數(shù)已經(jīng)寫(xiě)了下部分地實(shí)現(xiàn)也不難你以在工程中加入你所想要輸26

個(gè)人收集整理-ZQ出地函數(shù)或變量.文來(lái)自于絡(luò)搜索我們已經(jīng)知道是包含若干個(gè)函數(shù)地庫(kù)文件,應(yīng)用程序使用中地函數(shù)之前,應(yīng)該先導(dǎo)出這些函數(shù),以便供給應(yīng)用程序使用.導(dǎo)出這些函數(shù)有兩種方法,一是在定義函數(shù)時(shí)使用導(dǎo)出關(guān)鍵字外一種方法是在創(chuàng)建文件時(shí)使用模塊定義文需要讀者注意地是在使用第一種方法地時(shí)候,不能使用文.下通過(guò)兩個(gè)例子來(lái)說(shuō)明如何使用這兩種方法創(chuàng)建文.文檔來(lái)自于網(wǎng)絡(luò)搜索)使用導(dǎo)出函數(shù)關(guān)鍵創(chuàng)建,該動(dòng)態(tài)鏈接庫(kù)中有兩個(gè)函數(shù),分別用來(lái)實(shí)現(xiàn)得到個(gè)數(shù)地最大和最小數(shù)在文件中分別輸入如下原代碼:文檔來(lái)自于網(wǎng)絡(luò)搜索""()(,);""()(,);##(,){(>);;}(,){(>);;}文來(lái)自于網(wǎng)絡(luò)搜索該動(dòng)態(tài)鏈接庫(kù)編譯成功后,打開(kāi)工程中地目錄,可以看到、兩個(gè)文件文中包含文件名和文件中地函數(shù)名等件只是應(yīng)該文件"映像文"文件中地度要小地多在進(jìn)行隱式鏈接時(shí)要用到.讀可能已經(jīng)注意到在中有關(guān)鍵"",它可以使其編程語(yǔ)言訪問(wèn)你編寫(xiě)地中地函.文來(lái)于網(wǎng)絡(luò)搜索)用文件創(chuàng)建工程為了用文件創(chuàng)建刪上個(gè)例子創(chuàng)建地工程中地文件并在該文件頭刪除#語(yǔ)句,同時(shí)往該工程中加入一個(gè)文本文件,命名.一文件中只有兩個(gè)必需地部分:和在該文件中加入如下代碼:文檔來(lái)自于網(wǎng)絡(luò)搜索其中語(yǔ)句說(shuō)明該文件是屬于相應(yīng)地(在這里是指屬于地),語(yǔ)句下列出要導(dǎo)出地函數(shù)名稱(chēng).我們可以在文件中地導(dǎo)出函數(shù)后加,如,,表示要導(dǎo)出地函數(shù)順序號(hào),在進(jìn)行顯式連時(shí)可以用到它該譯成功后,打開(kāi)程中地目錄,同樣也會(huì)看到和文件文來(lái)自于網(wǎng)絡(luò)搜索36

個(gè)人收集整理-ZQ注:和文件這兩種方式不能同時(shí)使用.[]方生成常規(guī)擴(kuò)展在[]下成文件又有三種方式,在創(chuàng)建,要根據(jù)實(shí)際情況選擇創(chuàng)建地方式一是常規(guī)靜態(tài)鏈接到,另一種是常規(guī)動(dòng)態(tài)鏈接到兩者地區(qū)別是:前者使用地是地靜態(tài)鏈接庫(kù),生成地文件長(zhǎng)度大一不使用這種式,后者使用地動(dòng)態(tài)鏈接庫(kù),生成地文件長(zhǎng)度?。粍?dòng)態(tài)鏈接到地規(guī)則所有輸出地函數(shù)應(yīng)該以如下語(yǔ)句開(kāi)始:文檔來(lái)自于網(wǎng)絡(luò)搜索((此句來(lái)正確地切換模塊狀態(tài)文檔來(lái)自于網(wǎng)絡(luò)搜索最后一種是擴(kuò)展,這種特點(diǎn)是用來(lái)建立地派生類(lèi),只被用類(lèi)庫(kù)所編寫(xiě)地應(yīng)用程序所調(diào)用.前面我們已經(jīng)介紹過(guò),和不樣,它沒(méi)有一個(gè)從繼承而來(lái)地類(lèi)地對(duì)象,編譯器默認(rèn)了一個(gè)入口函數(shù)作為對(duì)地初始化你可以在此函數(shù)中實(shí)現(xiàn)初代碼如下文檔來(lái)自于網(wǎng)絡(luò)搜索(,,{(){………};}文來(lái)自于網(wǎng)絡(luò)搜索參數(shù)存放地句柄,參數(shù)指明調(diào)用函數(shù)地原因,是一個(gè)被系統(tǒng)所保留地參數(shù).對(duì)于隱式鏈接是一個(gè)非零值,對(duì)于顯式鏈接值是.檔來(lái)自于網(wǎng)絡(luò)搜索在下建立文件,會(huì)自動(dòng)生成文件框架,其它與建立傳統(tǒng)地沒(méi)有什么區(qū)別,只要在相應(yīng)地頭文件寫(xiě)入關(guān)鍵字)函類(lèi)型和函數(shù)等,或在生成地文件中下入數(shù)名就可以了需注意地是在向其它開(kāi)發(fā)人員分發(fā)擴(kuò)展時(shí)不要忘記提供描述中類(lèi)地頭文件以及相應(yīng)地文件和本身,此后開(kāi)發(fā)人員就能充分利用你開(kāi)發(fā)地?cái)U(kuò)展.檔來(lái)自于網(wǎng)絡(luò)搜索四、動(dòng)態(tài)鏈接庫(kù)地鏈接應(yīng)用程序使用可以采用兩種方式:一種是隱式鏈接,另一種是顯式鏈.在用之前首先要知道中函數(shù)地結(jié)構(gòu)信息在目錄下提供了一個(gè)名為地小程序,用它以查看文件中地函數(shù)結(jié)構(gòu)另,系統(tǒng)將遵循下面地搜索順序來(lái)定位:.含文件地目錄,.進(jìn)程地當(dāng)前工作目錄,.系目錄,.錄,.列在環(huán)境變量中地一系列目.文檔來(lái)自于網(wǎng)絡(luò)搜索.隱式鏈接隱式鏈接就是在程序開(kāi)始執(zhí)行時(shí)就將文件加載到應(yīng)用程序當(dāng)中實(shí)現(xiàn)隱式鏈接很容易,只要將導(dǎo)入函數(shù)關(guān)鍵字()函名等寫(xiě)到應(yīng)用程序相應(yīng)地頭文件中就可以了下地例子通過(guò)隱式鏈接調(diào)用庫(kù)中地函數(shù)首生成一個(gè)項(xiàng)目為,在、文中分別輸入如下代碼:文檔來(lái)自于網(wǎng)絡(luò)搜索(,""());46

個(gè)人收集整理-ZQ""());##(){;()("比較地結(jié)果為");}文來(lái)自于網(wǎng)絡(luò)搜索在創(chuàng)建文件之前,要先將和拷貝到當(dāng)前工程所在地目錄下面,也可以拷貝到地目下如使用地是文件刪除文件中關(guān)鍵字"".文中地關(guān)鍵字是要地編器在時(shí)接到文,當(dāng)然,開(kāi)發(fā)人員也可以不使用"")語(yǔ)句,而直接在工程地頁(yè)欄填入既.文來(lái)自于網(wǎng)絡(luò)搜索.顯式鏈接顯式鏈接是應(yīng)用程序在執(zhí)行過(guò)程中隨時(shí)可以加載文件可以隨時(shí)卸載文件是式鏈接所無(wú)法作到地,所以顯式鏈接具有更好地靈活性,對(duì)于解釋性語(yǔ)言更為合適不實(shí)現(xiàn)顯式鏈接要麻煩一些在用程序中用或供地顯式地將自己所做地動(dòng)態(tài)鏈接庫(kù)調(diào)進(jìn)來(lái)態(tài)接庫(kù)地文件名即是上述兩個(gè)函數(shù)地參數(shù)后再用獲取想要引入地函自你可以象使用如同在應(yīng)用程序自定義地函數(shù)一樣來(lái)調(diào)用此引入函數(shù)了.在用程序退出之前,應(yīng)該用或提供地釋放動(dòng)態(tài)鏈接庫(kù)下面是通過(guò)顯式鏈接調(diào)用中地函數(shù)地例文來(lái)自于網(wǎng)絡(luò)搜索##(){(*)();(*)();;("")加動(dòng)態(tài)鏈庫(kù)文件;()(,"");();("比較地結(jié)果為");()卸文件;}文來(lái)自于網(wǎng)絡(luò)搜索在上例中使用類(lèi)型定義關(guān)鍵字,定義指向和中相同地函數(shù)原型指針,然后通將加到當(dāng)前地應(yīng)用程序中并返回當(dāng)前文件地句柄,然后通函獲取導(dǎo)入到應(yīng)用程序中地函數(shù)指針,函數(shù)調(diào)用完畢后,使用卸載文件.在譯程序之前,首先要將文件拷貝到工程所在地目錄或系統(tǒng)目錄.文來(lái)自于網(wǎng)絡(luò)索使用顯式鏈接應(yīng)用程序編譯時(shí)不需要使用相應(yīng)地文.外使(函時(shí)以利用()函直接使用中函數(shù)出現(xiàn)地

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論