- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。 大綱 29-1. DLL動態函式庫開發 29-2. LIB靜態函式庫開發 本章習題 29-1. DLL動態函式庫開發 相信各位一定常常會遇到一種情況,就是常常在執行某些應用程式時,系統會出現『無法找到動態連結程式庫xxx.dll』,接著這個應用程式將會在你按下確定時一起被關閉。我們這一小節要提到的東西就是這個『DLL』。 到底dll是什麼東西?這個東西他又有什麼樣的用途呢?DLL的原文意思是『Dynamic Link Library』,也就是動態連結函式庫。一般小型的應用程式很少會用到這種所謂的DLL動態函式庫,但是對於一個大型應用程式(如BCB、Office、Windows等等),使用DLL動態函式庫可以降低許多Memory的使用量,也有助於各個Component的獨立,更有利於後續版本的維護及開發。 29-1. DLL動態函式庫開發 假設某個應用程式有使用到某個dll檔案,在開啟這個應用程式時,應用程式並不會馬上將dll這個函式庫load進入Memory中,只是將『載入點』紀錄下來供需要時才使用。若是在這次執行應用程式的過程中,都不需要執行到dll函式庫內所提供的功能,那在這次執行程式的過程中就減少了一個dll的Memory空間!若是有需要這個dll所提供的功能時,應用程式才會即時的將這個dll所需要的資源load到Memory中,讓使用者使用。 DLL函式庫還有一個關於記憶體方面的特點,那就是如果有超過兩個以上的應用程式使用到同一個dll,在記憶體中並不會吃掉兩倍以上的記憶體空間,不管幾個程式會用到,記憶體中永遠就只有放這麼一份dll函式庫的資源。根據上面的說法,DLL真的可以降低執行的記憶體使用量! 29-1. DLL動態函式庫開發 除了記憶體方面的優勢,當我們在開發DLL的時候,我們一定是根據某個功能開發的,所以當我們現在要開發一個大型的應用程式,我們就可以先利用軟體工程的技術好好的分析一下即將要開發的應用程式,可以開始分Component,將這些Component的Input以及Output都定義清楚,並且發包出去給各個程式設計師。這時候,程式設計師只需要將接到的工作都寫成DLL檔案,這樣既方便最後的整合,也將各個功能的程式碼獨立出來。 既然DLL有以上我們所說的優點,那是不是表示,當我們在開發一套軟體的後續開發或是維護時,也因為之前分工的很清楚,所以維護容易,可以減少維護軟體的人力與物力。 29-1. DLL動態函式庫開發 寫DLL需要注意的事情: 如何寫『entry point』 這個entry point就是當有程式呼叫到dll檔案時的切入點。 利用BCB來寫DLL動態函式庫有兩種entry point的寫法, 第一種是使用BCB的entry point 第二種則是使用Microsoft Visual C++的entry point 一般來說,既然要寫一個DLL動態函式庫一定就是希望可以讓多個應用程式共同使用它,這時候如果這些要用到這個DLL的應用程式的發展環境都在BCB下的話,你選擇哪一種DLL的entry point格式都沒有關係,但是如果你這個DLL檔案有可能讓在Visual C++下發展的應用程式使用到的話,我們還是比較建議使用Microsoft Visual C++格式的entry point會比較好。 29-1. DLL動態函式庫開發 範例29-1:DLL動態函式庫開發(BCB Style DLL) 範例說明 在範例29-1中,我們最主要是使用BCB的Entry Point當作切入點來實作該DLL函式庫,而這個函式庫所要表現出來的功能就是從m加到n的總合為多少。底下我們就一步一步帶領讀者開始練習DLL的實作範例。 Step 1:建立一個dll的開發專案 開一個新的專案,並且選擇DLL這個圖示。接著會出現一個對話窗,讓我們決定要使用C還是C++開發該DLL元件,也讓我們選擇是不是要使用VCL、CLX、Multi Thread來開發,或是要改用VC++的Entry Point。 29-1. DLL動態函式庫開發 範例29-1:DLL動態函式庫開發(BCB Style DLL) Step 2:撰寫主要程式碼 當我們按下該對話窗的OK之後,BCB就會自動幫我們產生一些必要的Code,這些Code包括了最重要的Entry Poin
文档评论(0)