如何用vc++創(chuàng)建及調(diào)用dll_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、【轉(zhuǎn)】如何用VC創(chuàng)建及調(diào)用DLL(2010120113:57:33)一、前言一、前言自從微軟推出16位的Windows操作系統(tǒng)起,此后每種版本的Windows操作系統(tǒng)都非常依賴于動態(tài)鏈接庫(DLL)中的函數(shù)和數(shù)據(jù),實際上Windows操作系統(tǒng)中幾乎所有的內(nèi)容都由DLL以一種或另外一種形式代表著,例如顯示的字體和圖標存儲在GDIDLL中、顯示W(wǎng)indows桌面和處理用戶的輸入所需要的代碼被存儲在一個UserDLL中、Windows編程所需

2、要的大量的API函數(shù)也被包含在KernelDLL中。在Windows操作系統(tǒng)中使用DLL有很多優(yōu)點,最主要的一點是多個應用程序、甚至是不同語言編寫的應用程序可以共享一個DLL文件,真正實現(xiàn)了資源“共享“,大大縮小了應用程序的執(zhí)行代碼,更加有效的利用了內(nèi)存;使用DLL的另一個優(yōu)點是DLL文件作為一個單獨的程序模塊,封裝性、獨立性好,在軟件需要升級的時候,開發(fā)人員只需要修改相應的DLL文件就可以了,而且,當DLL中的函數(shù)改變后,只要不是參數(shù)

3、的改變程序代碼并不需要重新編譯。這在編程時十分有用,大大提高了軟件開發(fā)和維護的效率。既然DLL那么重要,所以搞清楚什么是DLL、如何在Windows操作系統(tǒng)中開發(fā)使用DLL是程序開發(fā)人員不得不解決的一個問題。本文針對這些問題,通過一個簡單的例子,即在一個DLL中實現(xiàn)比較最大、最小整數(shù)這兩個簡單函數(shù),全面地解析了在VisualC編譯環(huán)境下編程實現(xiàn)DLL的過程,文章中所用到的程序代碼在Windows98系統(tǒng)、VisualC6.0編譯環(huán)境下通

4、過。二、二、DLLDLL的概念的概念DLL是建立在客戶服務器通信的概念上,包含若干函數(shù)、類或資源的庫文件,函數(shù)和數(shù)據(jù)被存儲在一個DLL(服務器)上并由一個或多個客戶導出而使用,這些客戶可以是應用程序或者是其它的DLL。DLL庫不同于靜態(tài)庫,在靜態(tài)庫情況下,函數(shù)和數(shù)據(jù)被編譯進一個二進制文件(通常擴展名為.LIB),VisualC的編譯器在處理程序代碼時將從靜態(tài)庫中恢ExtensionDll:擴展DLL是使用MFC的動態(tài)鏈接版本所創(chuàng)建的,并

5、且它只被用MFC類庫所編寫的應用程序所調(diào)用。例如你已經(jīng)創(chuàng)建了一個從MFC的CtoolBar類的派生類用于創(chuàng)建一個新的工具欄,為了導出這個類,你必須把它放到一個MFC擴展的DLL中。擴展DLL和常規(guī)DLL不一樣,它沒有一個從CWinApp繼承而來的類的對象,所以,開發(fā)人員必須在DLL中的DllMain函數(shù)添加初始化代碼和結(jié)束代碼。三、動態(tài)鏈接庫的創(chuàng)建三、動態(tài)鏈接庫的創(chuàng)建在VisualC6.0開發(fā)環(huán)境下,打開FileNewProject選項

6、,可以選擇Win32DynamicLinkLibrary或MFCAppWizard[dll]來以不同的方式來創(chuàng)建NonMFCDll、RegularDll、ExtensionDll等不同種類的動態(tài)鏈接庫。1Win32DynamicLinkLibrary方式創(chuàng)建NonMFCDLL動態(tài)鏈接庫每一個DLL必須有一個入口點,這就象我們用C編寫的應用程序一樣,必須有一個WINMAIN函數(shù)一樣。在NonMFCDLL中DllMain是一個缺省的入口函數(shù)

7、,你不需要編寫自己的DLL入口函數(shù),用這個缺省的入口函數(shù)就能使動態(tài)鏈接庫被調(diào)用時得到正確的初始化。如果應用程序的DLL需要分配額外的內(nèi)存或資源時,或者說需要對每個進程或線程初始化和清除操作時,需要在相應的DLL工程的.CPP文件中對DllMain()函數(shù)按照下面的格式書寫。BOOLAPIENTRYDllMain(HLEhModuleDWDul_reason_f_callLPVOIDlpReserved)switch(ul_reason_

溫馨提示

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

評論

0/150

提交評論