日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

动态链接库的创建

發布時間:2025/3/17 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态链接库的创建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自從微軟推出16位的Windows操作系統起,此后每種版本的Windows操作系統都非常依賴于動態鏈接庫(DLL)中的函數和數據,實際上Windows操作系統中幾乎所有的內容都由DLL以一種或另外一種形式代表著,例如顯示的字體和圖標存儲在GDI DLL中、顯示Windows桌面和處理用戶的輸入所需要的代碼被存儲在一個User DLL中、Windows編程所需要的大量的API函數也被包含在Kernel DLL中。在Windows操作系統中使用DLL有很多優點,最主要的一點是多個應用程序、甚至是不同語言編寫的應用程序可以共享一個DLL文件,真正實現了資源"共享",大大縮小了應用程序的執行代碼,更加有效的利用了內存;使用DLL的另一個優點是DLL文件作為一個單獨的程序模塊,封裝性、獨立性好,在軟件需要升級的時候,開發人員只需要修改相應的DLL文件就可以了,而且,當DLL中的函數改變后,只要不是參數的改變,程序代碼并不需要重新編譯。這在編程時十分有用,大大提高了軟件開發和維護的效率。

  既然DLL那么重要,所以搞清楚什么是DLL、如何在Windows操作系統中開發使用DLL是程序開發人員不得不解決的一個問題。本實例針對這些問題,通過一個簡單的例子,即調用在一個DLL中函數,實現用戶輸入數據的自加功能,全面地解析了在Visual C++編譯環境下編程實現DLL、調用DLL中的函數的過程。程序編譯運行后的界面效果如圖一所示:

?

?

圖一、調用DLL中的函數實現數據自加功能程序效果圖

?

?

  一、實現方法

  1、DLL的概念

  DLL是建立在客戶/服務器通信的概念上,包含若干函數、類或資源的庫文件,函數和數據被存儲在一個DLL(服務器)上并由一個或多個客戶導出而使用,這些客戶可以是應用程序或者是其它的DLL。DLL庫不同于靜態庫,在靜態庫情況下,函數和數據被編譯進一個二進制文件(通常擴展名為*.LIB),Visual C++的編譯器在處理程序代碼時將從靜態庫中恢復這些函數和數據并把他們和應用程序中的其他模塊組合在一起生成可執行文件。這個過程稱為"靜態鏈接",此時因為應用程序所需的全部內容都是從庫中復制了出來,所以靜態庫本身并不需要與可執行文件一起發行。在動態庫的情況下,有兩個文件,一個是引入庫(.LIB)文件,一個是DLL文件,引入庫文件包含被DLL導出的函數的名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到所需要使用的DLL文件,庫中的函數和數據并不復制到可執行文件中,因此在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中所要調用的函數的內存地址,這樣當一個或多個應用程序運行是再把程序代碼和被調用的函數代碼鏈接起來,從而節省了內存資源。從上面的說明可以看出,DLL和.LIB文件必須隨應用程序一起發行,否則應用程序將會產生錯誤。

  微軟的Visual C++支持三種DLL,它們分別是Non-MFC Dll(非MFC動態庫)、Regular Dll(常規DLL)、Extension Dll(擴展DLL)。Non-MFC DLL指的是不用MFC的類庫結構,直接用C語言寫的DLL,其導出的函數是標準的C接口,能被非MFC或MFC編寫的應用程序所調用。Regular DLL:和下述的Extension Dlls一樣,是用MFC類庫編寫的,它的一個明顯的特點是在源文件里有一個繼承CWinApp的類(注意:此類DLL雖然從CWinApp派生,但沒有消息循環),被導出的函數是C函數、C++類或者C++成員函數(注意不要把術語C++類與MFC的微軟基礎C++類相混淆),調用常規DLL的應用程序不必是MFC應用程序,只要是能調用類C函數的應用程序就可以,它們可以是在Visual C++、Dephi、Visual Basic、Borland C等編譯環境下利用DLL開發應用程序。常規DLL又可細分成靜態鏈接到MFC和動態鏈接到MFC上的,這兩種常規DLL的區別將在下面介紹。與常規DLL相比,使用擴展DLL用于導出增強MFC基礎類的函數或子類,用這種類型的動態鏈接庫,可以用來輸出一個從MFC所繼承下來的類。擴展DLL是使用MFC的動態鏈接版本所創建的,并且它只被用MFC類庫所編寫的應用程序所調用。例如你已經創建了一個從MFC的CtoolBar類的派生類用于創建一個新的工具欄,為了導出這個類,你必須把它放到一個MFC擴展的DLL中。擴展DLL 和常規DLL不一樣,它沒有一個從CWinApp繼承而來的類的對象,所以,開發人員必須在DLL中的DllMain函數添加初始化代碼和結束代碼。

  2、動態鏈接庫的創建  在Visual C++6.0開發環境下,打開File\New\Project選項,可以選擇Win32 Dynamic-Link Library或MFC AppWizard[dll]來以不同的方式來創建Non-MFC Dll、Regular Dll、Extension Dll等不同種類的動態鏈接庫。

  (一) Win32 Dynamic-Link Library方式創建Non-MFC DLL動態鏈接庫

  每一個DLL必須有一個入口點,這就象我們用C編寫的應用程序一樣,必須有一個WINMAIN函數一樣。在Non-MFC DLL中DllMain是一個缺省的入口函數,你不需要編寫自己的DLL入口函數,用這個缺省的入口函數就能使動態鏈接庫被調用時得到正確的初始化。如果應用程序的DLL需要分配額外的內存或資源時,或者說需要對每個進程或線程初始化和清除操作時,需要在相應的DLL工程的.CPP文件中對DllMain()函數按照下面的格式書寫。

轉載于:https://blog.51cto.com/jiudingsoft/853689

總結

以上是生活随笔為你收集整理的动态链接库的创建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲h在线观看 | a级片免费网站 | 91成人免费在线观看视频 | 伊人成综合 | 国产真实老熟女无套内射 | 夜夜爱夜夜操 | 在线99视频 | 免费看又黄又无码的网站 | 岛国二区三区 | 欧美男人又粗又长又大 | 国产一区资源 | 1000部啪啪未满十八勿入超污 | 亚洲一区二区三区午夜 | 一级黄色片在线免费观看 | 无人在线观看高清视频 单曲 | 久久久久久一区二区 | 国产毛片18 | 日韩有色 | 中文字幕乱码人妻二区三区 | 久久露脸国语精品国产91 | 少妇高潮惨叫久久久久久 | 午夜日韩电影 | 四虎影院在线看 | 涩涩网站视频 | 天堂中文在线观看视频 | 亚洲精品一区二区三区婷婷月 | 国产精品15p | 免费成人美女在线观看 | 姐姐av| 日本午夜网站 | 日本中文字幕在线不卡 | 欧美日韩不卡视频 | 人人插人人插 | 日韩午夜免费 | 日韩avxxx | 99精品久久精品一区二区 | 欧美日韩一区二区三区在线电影 | h视频在线看 | 成人看的视频 | 欧美成人午夜免费视在线看片 | 老熟妇高潮一区二区高清视频 | 视频在线91 | 久久久久一级片 | www色婷婷| 欧美性tv | 日本裸体网站 | 自拍偷拍2019| 色婷婷777777仙踪林 | 亚洲欧美激情一区二区三区 | 国产一区二区三区四区五区在线 | 一区二区三区www污污污网站 | 丰满少妇aaaaaa爰片毛片 | 德国艳星videos极品hd | 美女干b视频| 亚洲黄一区 | 日日干夜夜爽 | 国产日韩精品一区二区三区 | a级片国产 | 久久精品牌麻豆国产大山 | 欧美50p| 欧美三级韩国三级日本三斤在线观看 | www.日日日| 高h免费视频 | 欧美xxxxxhd | 午夜神器在线观看 | 久久久久久久偷拍 | 精品久久人人妻人人做人人 | 无码人妻精品一区二区三应用大全 | 免费在线黄色网址 | 色爽黄| 97人人爽 | 91视频免费视频 | 黄色小说在线视频 | 三级黄色网络 | 成人爱爱视频 | 久久久久网 | 综合天天色 | 大奶一区| 97超碰在线免费观看 | 成人另类小说 | 黄色a站 | 国产av人人夜夜澡人人爽麻豆 | 青青草这里只有精品 | 毛片大片| 狠狠干2018| 国产不卡毛片 | 激情久久久久久 | 95看片淫黄大片一级 | 看毛片的网址 | 他揉捏她两乳不停呻吟动态图 | 久草视频免费在线观看 | 亚洲欧洲精品视频 | 免费人妻精品一区二区三区 | 97在线免费观看 | 国产精品女人精品久久久天天 | 国产一区欧美日韩 | 中国农村一级片 | 色欧美88888久久久久久影院 | 国产一区=区 |