A. 用C語言寫的函數弄成DLL動態鏈接庫,要怎麼做
http://www.360doc.com/content/10/0808/09/2594274_44467596.shtml
B. 動態鏈接庫(DLL)的作用是什麼
動態鏈接庫(DLLs)是從C語言函數庫和Pascal庫單元的概念發展而來的。所有的C語言標准庫函數都存放在某一函數庫中,同時用戶也可以用LIB程序創建自己的函數庫。在鏈接應用程序的過程中,鏈接器從庫文件中拷貝程序調用的函數代碼,並把這些函數代碼添加到可執行文件中。這種方法同只把函數儲存在已編譯的.OBJ文件中相比更有利於代碼的重用。
但隨著Windows這樣的多任務環境的出現,函數庫的方法顯得過於累贅。如果為了完成屏幕輸出、消息處理、內存管理、對話框等操作,每個程序都不得不擁有自己的函數,那麼Windows程序將變得非常龐大。Windows的發展要求允許同時運行的幾個程序共享一組函數的單一拷貝。動態鏈接庫就是在這種情況下出現的。動態鏈接庫不用重復編譯或鏈接,一旦裝入內存,Dlls函數可以被系統中的任何正在運行的應用程序軟體所使用,而不必再將DLLs函數的另一拷貝裝入內存。
1.1. 動態鏈接庫的工作原理
「動態鏈接」這幾字指明了DLLs是如何工作的。對於常規的函數庫,鏈接器從中拷貝它需要的所有庫函數,並把確切的函數地址傳送給調用這些函數的程序。而對於DLLs,函數儲存在一個獨立的動態鏈接庫文件中。在創建Windows程序時,鏈接過程並不把DLLs文件鏈接到程序上。直到程序運行並調用一個DLLs中的函數時,該程序才要求這個函數的地址。此時Windows才在DLLs中尋找被調用函數,並把它的地址傳送給調用程序。採用這種方法,DLLs達到了復用代碼的極限。
動態鏈接庫的另一個方便之處是對動態鏈接庫中函數的修改可以自動傳播到所有調用它的程序中,而不必對程序作任何改動或處理。
DLLs不僅提供了函數重用的機制,而且提供了數據共享的機制。任何應用程序都可以共享由裝入內存的DLLs管理的內存資源塊。只包含共享數據的DLLs稱為資源文件。如Windows的字體文件等。
1.2. Windows系統的動態鏈接庫
Windows本身就是由大量的動態鏈接庫支持的。這包括Windows API函數 ( KRNLx86.EXE,USER.EXE,GDI.EXE,…),各種驅動程序文件,各種帶有.Fon和.Fot 擴展名的字體資源文件等。Windows還提供了針對某一功能的專用DLLs,如進行DDE編程的ddeml.dll,進行程序安裝的ver.dll等。
雖然在編寫Windows程序時必然要涉及到DLLs,但利用Delphi ,用戶在大部分時候並不會注意到這一點。這一方面是因為Delphi提供了豐富的函數使用戶不必直接去使用Windows API;另一方面即使使用Windows API,由於Delphi把API函數和其它Windows DLLs函數重新組織到了幾個庫單元中,因而也不必使用特殊的調用格式。所以本章的重點放在編寫和調用用戶自定義的DLLs上。
使用傳統的Windows編程方法來創建和使用一個DLLs是一件很令人頭痛的事,正如傳統的Windows編程方法本身就令人生畏一樣。用戶需要對定義文件、工程文件進行一系列的修改以適應創建和使用DLLs的需要。Delphi的出現,在這一方面,正如在其它許多方面所做的那樣,減輕了開發者的負擔。更令人興奮的是Delphi利用DLLs 實現了窗體的重用機制。用戶可以將自己設計好的窗體儲存在一個DLLs中,在需要的時候可隨時調用它。
C. 動態鏈接庫dll應該怎樣設置調試
DLL有三種調試方法:
方法1:
如果動態鏈接庫是自己編寫的,並且測試代碼也是自己編寫的,那麼此時我們可以將動態鏈接庫和測試代碼的工程建立在一起,在調試測試代碼的時候,可以直接調用動態鏈接庫中的代碼。
我們在測試鏈接庫項目中的100行打個斷點,當執行到此處的時候,按F11就會進入到動態鏈接庫項目中的源碼中,就可以進行調試了。
方法2:
如果動態鏈接庫是自己編寫的,而調用動態鏈接庫的程序不是自己編寫的,那麼我們需要設置動態鏈接庫中的項目屬性,啟動調用動態鏈接庫的程序,形成鏈接之後,在調試的時候才可以數你在動態鏈接庫中調試。如下圖:
在項目屬性的調試中設置完成對應要啟動的exe之後,設置dll為啟動項目,即可以運行調試。
方法3:
如果動態鏈接庫不是自己編寫,程序也不是自己編寫,那麼這個時候只能通過Ollydbg或者其他調試工具調試了。使用OD調試dll,需要保證OD目錄下有loaddll.exe文件。
需要三個步驟如下:
1)我們可以先藉助LordPE獲取到導出表中的方法的RVA地址
2)藉助OD獲取到項目的基址
3)通過基址和RVA計算出來VA,就找到函數了
D. 動態鏈接庫文件dll一般是拿來干什麼用的
DLL文件即動態鏈接庫文件,是一種可執行文件,它允許程序共享執行特殊任務所必需的代碼和其他資源。Windows提供的DLL文件中包含了允許基於Windows的程序在Windows環境下操作的許多函數和資源。
DLL多數情況下是帶有DLL擴展名的文件,但也可能是EXE或其他擴展名。它們向運行於Windows操作系統下的程序提供代碼、數據或函數。程序可根據DLL文件中的指令打開、啟用、查詢、禁用和關閉驅動程序。
DLL的全稱是Dynamic Link Library, 中文叫做「動態鏈接文件」。在Windows操作系統中, DLL對於程序執行是非常重要的, 因為程序在執行的時候, 必須鏈接到DLL文件, 才能夠正確地運行。而有些DLL文件可以被許多程序共用。因此, 程序設計人員可以利用DLL文件, 使程序不至於太過巨大。但是當安裝的程序越來越多, DLL文件也就會越來越多, 如果當你刪除程序的時候, 沒有用的DLL文件沒有被刪除的話, 久而久之就造成系統的負擔了。
DLL是動態連接庫。使用動態連接庫的一些好處是:
1.多個應用程序共享代碼和數據:比如Office軟體的各個組成部分有相似的外觀和功能,這就是通過共享動態連接庫實現的。
2.在鉤子程序過濾系統消息時必須使用動態連接庫。
3.動態連接庫以一種自然的方式將一個大的應用程序劃分為幾個小的模塊,有利於小組內部成員的分工與合作。而且,各個模塊可以獨立升級。如果小組中的一個成員開發了一組實用常式,他就可以把這些常式放在一個動態連接庫中,讓小組的其他成員使用。
4.為了實現應用程序的國際化,往往需要使用動態連接庫。使用動態連接庫可以將針對某一國家、語言的信息存放在其中。對於不同的版本,使用不同的動態連接庫。在使用AppWizard生成應用程序時,我們可以指定資源文件使用的語言,這就是通過提供不同的動態連接庫實現的。
VC++、C++ Builder、Delphi都可以編寫DLL文件。Visual Basic 5.0以上版本也可以編寫一種特殊的DLL,即ActiveX DLL。
DLL不是獨立運行的程序,它是某個程序的一個部分,它只能由所屬的程序調用。用戶不能,也不需要打開它
E. 如何打開dll文件並進行修改編程
dll文件一般人是修改不了的,要修改*.dll文件必須要懂匯編,十六進制,ASCII碼等專業知識,但如果你有dll文件的源代碼並且懂編寫這個dll文件的編程語言的話則可任意修改。 dll文件是一種動態連接庫文件。本身是不能運行的,必須靠應用程序來調用載入!dll文件的編寫也是需要根據主程序的介面來編寫!兩個程序下同一個名稱的dll相互替換都可能會報錯的。
F. "dll" 這個編程術語怎麼讀啊
dll的讀音是「貸兒」
G. 初學者求教:動態鏈接庫(DLL)初始化常式失敗該怎麼辦
DLL是Dynamic Link Library的縮寫,意為動態鏈接庫。在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可有多個DLL文件,一個DLL文件也可能被幾個應用程序所共用,這樣的DLL文件被稱為共享DLL文件。DLL文件一般被存放在C:\Windows\System目錄下。
1、如何了解某應用程序使用哪些DLL文件
右鍵單擊該應用程序並選擇快捷菜單中的「快速查看」命令,在隨後出現的「快速查看」窗口的「引入表」一欄中你將看到其使用DLL文件的情況。
2、如何知道DLL文件被幾個程序使用
運行Regedit,進入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-Version\SharedDlls子鍵查看,其右邊窗口中就顯示了所有DLL文件及其相關數據,其中數據右邊小括弧內的數字就說明了被幾個程序使用,(2)表示被兩個程序使用,(0)則表示無程序使用,可以將其刪除。
3、如何解決DLL文件丟失的情況
有時在卸載文件時會提醒你刪除某個DLL文件可能會影響其他應用程序的運行。所以當你卸載軟體時,就有可能誤刪共享的DLL文件。一旦出現了丟失DLL文件的情況,如果你能確定其名稱,可以在Sysbckup(系統備份文件夾)中找到該DLL文件,將其復制到System文件夾中。如果這樣不行,在電腦啟動時又總是出現「***dll文件丟失……」的提示框,你可以在「開始/運行」中運行Msconfig,進入系統配置實用程序對話框以後,單擊選擇「System.ini」標簽,找出提示丟失的DLL文件,使其不被選中,這樣開機時就不會出現錯誤提示了。
H. 怎樣用VB編寫.DLL動態鏈接庫文件
新建DLL文件:打開vb6.0,然後在新建工程窗口中選擇「ActiveX DLL」(如左圖),或點擊vb窗體左上角的「文件」,再點擊「新建工程」,選擇「ActiveX DLL」
保存文件到本地,防止編寫過程中出錯,代碼丟失:點擊」文件「,再點擊」保存工程「,選擇存儲路徑後點「確定」;同樣在代碼編寫中要時刻注意保存代碼
修改工程名稱和類模塊名稱:工程名稱是你編寫完成後,引用者在vb窗體中引用對象的名稱,類模塊名稱是代碼中引用的對象的名稱
編寫DLL文件的代碼:以下僅為示例
編譯成DLL格式文件,DLL文件就製作成功啦:點擊「文件」,再點擊「生成****.dll」,選擇存儲路徑,點「確定」
DLL文件如何引用:使用者只需要在vb點擊「工程」,再點擊「引用」,就可以引用這個dll啦!