導航:首頁 > 編程知識 > mq4編程dll文件什麼意思

mq4編程dll文件什麼意思

發布時間:2023-03-23 20:38:53

① 什麼是DLL文件

dll實際上是動態鏈接庫的縮寫,從windows1.0開始,動態鏈接庫就是整個操作系統的基礎,那麼這有什麼作用呢?在dos時代,程序員是通過編寫程序來達到預期的目的的,每實現一個目的就需要編寫一個程序,這樣下去,簡單的還好,要是復雜的程序話,那乞不是既浪費時間,又浪費青春。於是聰明的程序員們想出了一個辦法,把的實現一定功能的程序模塊存放在一個文件當中,以API函數形式存放在dll當中,當編寫程序的時候,需要用到這個功能,那麼直接從這個文件當中調用就可以了,於是就出現了dll——動態連接庫。
那麼動態連接庫有什麼作用呢?
優點之一,上面已經提過了,程序員把一些模塊壓入dll文件之後,在要運行程序的時候只需要調用動態鏈接庫就可以了,而並不需要把dll載入到內存中,節省了大量的內存空間,可以方便運行其他的程序,許多朋友在關機的時候,一直關不了,整的郁悶,其實就是因為系統所調用的dll太多,導致了計算機性能的驟減,其實只需要把一些無關緊要的dll刪除掉就可以了
優點之二,在一個很大的游戲中,通常需要調用許許多多的動態鏈接庫來給玩家一個美觀震撼的效果,《極品飛車9---最高通緝》讓本文作者我感受到了一種從來沒有感受過的感覺,那種感覺就象是初戀的味道,畫面效果棒極了。可是要實現這樣一個效果,需要許多程序員編寫不同的dll來互相協助,那麼這些dll可以用vc++,vb,Delphi,asm等等來完成,只要每個程序員負責編寫一個功能,這樣只要調用在一起就方便多了,節省了大量的人力,物力,財力。
既然dll有這么多好處,而且又這么方便,我那木馬的程序員又做出過什麼呢?他只不過
調用了系統的dll函數罷了(windwos系統中有3個非常重要dllkernel32.dlluser32.dllgdi32.dll其中包括windows系統諸多功能的函數)
呵呵,其實話不能這樣說。木馬的編寫者也需要有很深的工夫哦,那麼我們現在以黑客之門做為一個例子來看看,這個例子需要的工具depend walker,可以在黑客基地論壇黑客兵器庫http://bbs.hackbase.com/viewthread.php?tid=2860045&fpage=1下載
我們首先來看看用depend walker打開黑客之門的動態鏈接庫

我們發現,在左邊的hkdoordll.dll下面的樹狀結構,顯示出了黑客之門所調用的dll列表,從這里不難發現,其實dll也可以調用dll。那麼dll我們可以把他看做是一個exe文件,只是少了一個入口函數而已(就暫且這樣理解)
分支下有分支,而右邊中間的那4個東東,這個是dll的輸出函數表,在function欄目下的是輸出函數的名稱,因此,我們可以很容易發現,黑客之門hkdoordll.dll主要負責4個方面的任務。DllRegisterServer DllUnRegisterServer ServiceMain DllCanUnloadNow
然而這對於一個後門來說已經夠了,這需要作者有足夠的編程知識,我們再一次向作者致敬。分享了這樣一個環保無污染的後門。
通過對上面的知識的理解。我們可以發現其實,dll可真算是一個大寶庫,不要對他太狠,一看到可疑的就丟到垃圾筒里去了。其實dll文件還可以盜用哦。盜用的工具,可以在黑客基地論壇黑客兵器庫http://bbs.hackbase.com/viewthread.php?tid=2859649&fpage=1下載

我們用他來打開黑客之門的dll,可以看到他的版權等等,對於有點陣圖,音樂,圖表,對話框的dll,我們也可以看到他裡面的全部內容。我們可以修改版權,更換點陣圖,更換音樂,更換對話框,總之只有你想不到的,沒有你做不到的。
那麼既然dll被這樣多程序調用,如果結束掉這個木馬後門dll的調用過程,那麼這個後門是不是沒用啦,那回答當然是肯定的,那麼如何知道DLL文件被幾個程序使用呢?
我們只需要:
運行Regedit,進入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-
Version\SharedDlls子鍵查看,其右邊窗口中就顯示了所有DLL文件及其相關數據,其中數據右邊小括弧內的數字就說明了被幾個程序使用,(2)表示被兩個程序使用,(0)則表示無程序使用,可以將其刪除。
嘿嘿,這下知道window優化大師那分析dll的原理了吧。
在黑客基地論壇的新手學堂里,經常看到有人求助:我的搜索欄什麼也不能顯示了,怎麼辦啊?如圖

其實那是因為dll沒有注冊造成的。
只需要在開始---運行—然後注冊兩個dll然後重新啟動就可以了,具體方法是
regsvr32 vbscript
regsvr32 jscript
當你看到跳出個對話框,裡面寫著,vbscript 中的dllregister server成功的時候,說明已經注冊成功了
什麼?還要注冊?或許你看到這里開始疑問了,這什麼注冊啊?是不是象進入一個論壇,需要注冊一個帳號才能進入一樣呢?
其實系統裡面的dll是分為兩類的。一類是需要注冊的,一類是不需要注冊的。
大多數都是通過命令regsvr32來注冊的。而windows為了減少所調用的dll的數量,提升計算機的性能以及速度。通常只把幾個重要的dll默認就注冊了,不常用的dll需要你自己去注冊。而注冊之後,系統就可以調用他了,從而具有了相應的功能。
而當你認為你的計算機所調用的無用dll太多的時候,可以通過命令regsvr32 /u dll的名稱來反注冊。
有些朋友的愛機會出現這樣的情況,在啟動的時候,錯誤對話框中提示DLL文件丟失
這是因為在卸載文件時會提醒你刪除某個DLL文件可能會影響其他應用程序的運行。所以當你卸載軟體時,就有可能誤刪共享的DLL文件。一旦出現了丟失DLL文件的情況,如果你能確定其名稱,可以在Sysbckup(系統備份文件夾)中找到該DLL文件,將其復制到System文件夾中。如果這樣不行,在電腦啟動時又總是出現「***dll文件丟失……」的提示框,你可以在「開始/運行」中運行Msconfig,進入系統配置實用程序對話框以後,單擊選擇「System.ini」標簽,找出提示丟失的DLL文件,使其不被選中,這樣開機時就不會出現錯誤提示了。

http://www.itsolution.org.cn/n/200608/08/n20060808_44125.shtml

在Windows世界中,有無數塊活動的大陸,它們都有一個共同的名字——動態鏈接庫。現在就走進這些神奇的活動大陸,找出它們隱藏已久的秘密吧!
初窺門徑:Windows的基石

隨便打開一個系統目錄,一眼望去就能看到很多擴展名DLL的文件,這些就是經常說的「動態鏈接庫」,DLL是Dynamic Link Library(即「動態鏈接庫」)的縮寫。從Microsoft公司推出首個版本的Windows以來,動態鏈接庫就一直是這個操作系統的基礎。

1.看看DLL里有什麼

與其用晦澀的專業術語來解決DLL是什麼,不如先來看看DLL里有什麼。DLL和EXE文件一樣,其中包含的也是程序的二進制執行代碼和程序所需的資源(比如圖標、對話框、字元串等),可是為什麼要把代碼放在DLL裡面,而不是做成EXE呢?其實DLL中的代碼是以API函數形式出現的,通俗地說,DLL中包含的程序代碼都被做成了一個個小模塊,應用程序通過按下所需DLL中特定的按鈕,來調用DLL中這個按鈕所代表的功能。在使用「記事本」等程序時,如果要保存文件或打開文件,就會彈出通用文件對話框,選擇文件位置。你可知道,這就是調用了系統底層DLL中的通用對話框界面。

2.系統中幾個重要的DLL

Windows中有3個非常重要的底層DLL:Kernel32.dll、User32.dll、GDI32.dll。其中Kernel32.dll顧名思義就是內核相關的功能,主要包含用於管理內存、進程和線程的函數;而User32.dll中包含的則是用於執行用戶界面任務的函數,比如把用戶的滑鼠點擊操作傳遞給窗口,以便窗口根據用戶的點擊來執行預定的事件;GDI32.dll的名稱用了縮寫,全稱是Graphical Device Interface(圖形設備介面),包含用於畫圖和顯示文本的函數,比如要顯示一個程序窗口,就調用了其中的函數來畫這個窗口。

3.為什麼要用DLL

剛才在談到這個問題的時候,只解釋了DLL將程序代碼封裝成函數的原理。為什麼封裝成函數,就能成為系統中大量使用DLL的理由呢?

①擴展應用程序

由於DLL能被應用程序動態載入內存。所以,應用程序可以在需要時才將DLL載入到內存中,這讓程序的可維護性變得很高。比如QQ的視頻功能需要升級,那麼負責編寫QQ的程序員不必將QQ所有代碼都重寫,只需將視頻功能相關的DLL文件重寫即可。

②便於程序員合作

這個和最終用戶關系不大,僅供了解。大家都知道編程工具有很多,比如VB、VC、Delphi等,如果好幾個人合作來編寫一個大的程序,那麼可能有的人用VB,有的人用VC,每人負責的部分所使用的編程語言都不同,究竟放在哪個編譯器中進行編譯呢?這就好比一群來自各個國家的人在共同編寫一篇文章,如果他們所使用的語言都不同,寫出來的文章怎麼可能湊到一起呢?而有了DLL後,可以讓VC程序員寫一個DLL,然後VB程序員在程序中調用,無需為怎麼將它們都編譯為一個單獨的EXE而發愁了。

③節省內存

如果多個應用程序調用的是同一個動態鏈接庫,那麼這個DLL文件不會被重復多次裝入內存中,而是由這些應用程序共享同一個已載入內存的DLL。就好比一個辦公室中,很少會為每一個員工配置一台飲水機的,而是在一個公共位置放上一個飲水機,所有需要喝水的職員都可以共用這台飲水機,降低了成本又節約了空間。

④共享程序資源

包括剛才提到過的通用文件對話框在內,DLL文件提供了應用程序間共享資源的可能。資源可以是程序對話框、字元串、圖標,或者聲音文件等。

⑤解決應用程序本地化問題

在下載了某個程序的漢化包後,打開漢化說明,經常可以看到用下載包中的DLL文件覆蓋掉程序原來的DLL,漢化就完成了。這些程序都是將執行代碼和應用程序界面分開編寫了,所以漢化者只需簡單地將其中和程序界面相關的DLL漢化並發布即可。
求知若渴:探究DLL的真相

誰知道DLL里究竟有多少函數,又有誰知道EXE調用了哪個DLL的哪些函數?其實,這個問題並不難解決。分析EXE文件的工具Dependency Walker(以下簡稱Depends,點擊下載Dependency Walker),今天它就是大家探險的工具,把DLL真相探個通通透透。

1.看看DLL里有多少函數

第一步:下載並解壓Depends,運行其中的depends.exe,然後選擇菜單「File→Open」(文件→打開),在文件選擇框中選中需要分析的DLL文件並打開,此處選擇QQ目錄下的QQZip.dll。

第二步:在程序左側的樹狀欄中就列出了這個DLL使用了哪些其他DLL的功能函數(原來DLL中還可以調用其他DLL^O^),而右側的兩個分欄列表分別顯示了函數輸入及輸出表,函數輸出表即為該DLL提供給其他EXE或者DLL調用的函數的總列表。

第三步:函數輸出表的Function欄中即為輸出函數的名稱(見圖1),在QQZip.dll中共發現了2個函數:Unzip、Zip。因此可以判斷該DLL在QQ程序中負責壓縮和解壓縮的任務。

圖1 QQZip.dll中的函數

2.審審EXE究竟用了哪個DLL

還是拿QQ來作為例子,在Depends中打開QQ.exe,這時界面左側的樹狀列表中顯示的就是QQ.exe調用的DLL列表(見圖2),如果展開這些DLL分支,還會發現其他的DLL,這就說明QQ調用的這些DLL文件還有可能(幾乎是肯定)再調用別的DLL。這就好比買了一台新的DVD機,可能其中用的機芯是SONY的,而這個機芯里的一個小電容又有可能是別的公司的,這是同樣的道理。

圖2 QQ.exe所調用的dll

3.用DLL看穿EXE真面目

剛才得到了QQ.exe所使用的DLL列表,其實通過這個列表,還能分析出很多別的信息。比如其中包含MFC42.dll,所以可以判斷QQ.exe是採用VC(即Visual C++)編寫的,而包含WSOCK32.dll則說明這個程序帶有網路通訊功能(廢話!QQ如果不能網路通訊還有什麼用……)。以下是一個簡表,大家在分析別的EXE時可以根據其所使用的DLL來對其功能進行初步判斷。

DLL文件名 可以判斷出的EXE信息

MFC42.dll 使用VC5.0/6.0編寫。
VBRun*.dll 「*」代表數字版本號,使用VB3.0/4.0編寫。
MSVBVM50.dll 使用VB5.0編寫,在Windows 98(SE)上自帶該DLL。
MSVBVM60.dll 使用VB6.0編寫,在Windows Me/2000/XP等系統上自帶該DLL。
ADVAPI32.dll 可能會進行注冊表操作。
WSOCK32.dll 具備網路通訊功能。
WS2_32.dll 具備網路通訊功能。
WININET.dll 具備HTTP瀏覽、下載等功能,典型的例子是瀏覽器、下載工具。
WINMM.dll 具備多媒體播放能力。
DDRAW.dll 游戲、高級圖像處理工具。
D3D*.dll 3D游戲,或者動畫處理工具。
4.DLL是個大寶庫
除供應用程序調用函數的DLL外,還有另一種用來保存資源的DLL,比如QQ目錄下的QQRes.dll,用Depends打開後發現沒有任何輸出函數,難道是一個雞肋DLL?可是改用資源工具Resource Hacker(下載地址:http://www.onlinedown.net/soft/12420.htm)打開這個DLL後,就發現原來其中保存了這么多QQ的資源,包括圖標、音樂、圖片、字元串、對話框……(見圖3)

圖3 dll文件中包含的其他資源

刨根問底:DLL的寓言

DLL引起的故障是很常見的,為什麼會引起故障?遇到故障怎麼解決?噓~偷聽一下DLL的對話,你就會明白了。

1.從搬運工談介面兼容性

在Windows工地上,有一個名叫EXE的包工頭,他手下有很多稱為DLL的建築工人。其中有一個專門負責搬運的DLL(暫且稱為「搬運工A」),每次需要搬運水泥時,包工頭EXE都只要對他喊一聲:「來!搬。」

過了一段時間,搬運工A覺得自己的效率太低,於是從原來的每次搬1袋水泥改成了每次搬3袋水泥。改進了搬運方法後,EXE包工頭仍然每次只是喊一聲:「來!搬。」卻不知搬運工A已經改變了搬運的方法。

但又過了一段時間,包工頭EXE把搬運工A給辭退了,從別的工地上找來了另一個DLL(暫且稱為「搬運工B」)。這個搬運工在別的工地的時候,搬運東西特別快,所以包工頭EXE決定把搬運工作給「升級」一下。但真正開始工作時,包工頭才發現出了問題……現在不管叫幾遍「來!搬。」這個新來的搬運工B都不知道究竟應該搬什麼。

上面的例子中,搬運工A改進搬運方法,但EXE調用它的方法仍不變,這就是DLL升級的原理,改進了內部的實現方法,但調用介面不變,這樣EXE文件不用跟著升級,就能調用新版本的DLL了。而搬運工B的故事說明,不管新版本的DLL效率多高,如果介面(可以理解為DLL中輸出的函數名)與原來的不一致,那麼EXE就不知道也無法調用它了。

2.登記身份證的DLL

在系統故障中,有很多都是由於DLL文件沒有注冊造成的,比如Windows XP的壓縮文件夾功能出現故障就很有可能是系統目錄中的zipfldr.dll沒有注冊造成的,這類故障的解決方法也大多是運行如下命令:

regsvr32 DLL文件名

很多人不理解為什麼要這么做,是不是所有的DLL都能這樣做呢?

其實系統中有兩種DLL,一種是不需注冊即可使用的,另一種則是必須經過系統登錄(即注冊)才能使用的。就好像一個臨時工,和一個記錄在員工名單上的長期合同工的區別一樣。如何才能區分這兩種DLL呢?方法很簡單,用剛才的Depends打開這個DLL,同樣是看函數輸出表,如果其中包含以下兩個函數(前者是注冊DLL,後者是反注冊DLL),那麼就一定是需要注冊才能使用的DLL了。

DllRegisterServer

DllUnregisterServer

而regsvr32這個命令,實際上就是調用DLL中的這兩個函數(「regsvr32 /u DLL文件名」調用的即為DllUnregisterServer反注冊函數)。

3.插件DLL的秘密

Winamp、Foobar 2000等很多軟體都具有插件功能,從網上下載一個DLL放在插件目錄下就能讓程序支持新的功能,這是怎麼做到的呢?就拿時下流行的播放軟體「千千靜聽」來舉例吧。

「千千靜聽」的插件目錄在該軟體安裝目錄下的Addin子目錄下,程序的插件目錄一般都會以「Plugins」、「Addin」來命名。在「千千靜聽」的插件目錄中有許多DLL文件,比如tt_asf.dll、tt_rm.dll等,從文件名中就能看出這些DLL是用來讓這個播放器支持各種不同類型的音頻文件的。同樣,用Depends打開這些文件,你就會發現這些文件的輸出函數表中都包括一個同樣的函數:ttpGetSoundAddIn(見圖4)。

圖4 千千靜聽所使用的插件協議

這就是插件的秘密,各種支持插件功能的程序在發布時,都會同時發布一份插件協議,協議中規定了該程序將要調用的插件DLL中必須包含的函數名稱及相關的參數規則,然後第三方的插件程序員在編寫這個程序的插件時就根據這個插件的標准來編寫DLL的輸出函數。

①對於插件tt_asf.dll

ttplayer.exe(「千千靜聽」主程序)對tt_asf.dll說:「我要調用你的ttpGetSoundAddIn函數!」

tt_asf.dll回答:「OK。」

②如果把不相關的DLL放進AddIn目錄

ttplayer.exe對未知DLL說:「我要調用你的ttpGetSoundAddIn函數!」

tt_asf.dll回答:「那是什麼函數?從來沒聽說過!」

② 什麼是DLL文件有何作用

DLL(Dynamic Link Library)文件即庫文件,是動態鏈接庫文件,又稱「應用程序拓展」,是軟體文件類型。

在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。

(2)mq4編程dll文件什麼意思擴展閱讀

你可以簡單的把DLL看成一種倉庫,它提供給你一些可以直接拿來用的變數、函數或類。在倉庫的發展史上經歷了「無庫-靜態鏈接庫-動態鏈接庫」的時代。

靜態鏈接庫與動態鏈接庫都是共享代碼的方式,如果採用靜態鏈接庫,則無論你願不願意,lib中的指令都被直接包含在最終生成的EXE文件中了。

但是若使用DLL,該DLL不必被包含在最終EXE文件中,EXE文件執行時可以「動態」地引用和卸載這個與EXE獨立的DLL文件。靜態鏈接庫和動態鏈接庫的另外一個區別在於靜態鏈接庫中不能再包含其他的動態鏈接庫或者靜態庫,而在動態鏈接庫中還可以再包含其他的動態或靜態鏈接庫。

參考資料來源:網路-庫文件

③ .dll文件是個什麼文件

dll(dynamic link library)動態鏈接庫
本質上這種文件和最常見的可執行文件,即.exe(executable)文件是一樣的,只不過,dll文件不能單獨運行,而是以被其他程序調用其內部提供的函數的方式運行

windows有很多自帶的dll文件,其中有很多提供了重要函數供操作系統調用,所以不能輕易刪除

④ dll是什麼文件格式

DLL的全稱是Dynamic Link Library, 中文叫做「動態鏈接文件」。

在Windows操作系統中, DLL對於程序執行是回非常重要的, 因為程序在執答行的時候, 必須鏈接到DLL文件, 才能夠正確地運行。

而有些DLL文件可以被許多程序共用。因此, 程序設計人員可以利用DLL文件, 使程序不至於太過巨大。

(4)mq4編程dll文件什麼意思擴展閱讀

DLL是動態連接庫。使用動態連接庫的一些好處是:

1.多個應用程序共享代碼和數據:比如Office軟體的各個組成部分有相似的外觀和功能,這就是通過共享動態連接庫實現的。

2.在鉤子程序過濾系統消息時必須使用動態連接庫。

3.動態連接庫以一種自然的方式將一個大的應用程序劃分為幾個小的模塊,有利於小組內部成員的分工與合作。而且,各個模塊可以獨立升級。如果小組中的一個成員開發了一組實用常式,他就可以把這些常式放在一個動態連接庫中,讓小組的其他成員使用。

參考資料來源:網路-動態鏈接庫文件

⑤ DLL是什麼文件

DLL文件即動態鏈接庫文件,是一種可執行文件,它允許程序共享執行特殊任務所必需的代碼和其他資源

比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟體系統的工作。可能存在一些模塊的功能較為通用,在構造其它軟體系統時仍會被使用。在構造軟體系統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序 EXE 文件中,會產生一些問題:一個缺點是增加了應用程序的大小,它會佔用更多的磁碟空間,程序運行時也會消耗較大的內存空間,造成系統資源的浪費;另一個缺點是,在編寫大的 EXE 程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的復雜性,也不利於階段性的單元測試。

Windows 系統平台上提供了一種完全不同的較有效的編程和運行環境,你可以將獨立的程序模塊創建為較小的 DLL (Dynamic Linkable Library) 文件,並可對它們單獨編譯和測試。在運行時,只有當 EXE 程序確實要調用這些 DLL 模塊的情況下,系統才會將它們裝載到內存空間中。這種方式不僅減少了 EXE 文件的大小和對內存空間的需求,而且使這些 DLL 模塊可以同時被多個應用程序使用。Windows 自己就將一些主要的系統功能以 DLL 模塊的形式實現。

一般來說,DLL 是一種磁碟文件,以.dll、.DRV、.FON、.SYS 和許多以 .EXE 為擴展名的系統文件都可以是 DLL。它由全局數據、服務函數和資源組成,在運行時被系統載入到調用進程的虛擬空間中,成為調用進程的一部分。如果與其它 DLL 之間沒有沖突,該文件通常映射到進程虛擬空間的同一地址上。DLL 模塊中包含各種導出函數,用於向外界提供服務。DLL 可以有自己的數據段,但沒有自己的堆棧,使用與調用它的應用程序相同的堆棧模式;一個 DLL 在內存中只有一個實例;DLL 實現了代碼封裝性;DLL 的編制與具體的編程語言及編譯器無關。

在 Win32 環境中,每個進程都復制了自己的讀/寫全局變數。如果想要與其它進程共享內存,必須使用內存映射文件或者聲明一個共享數據段。DLL 模塊需要的堆棧內存都是從運行進程的堆棧中分配出來的。Windows 在載入 DLL 模塊時將進程函數調用與 DLL 文件的導出函數相匹配。Windows 操作系統對 DLL 的操作僅僅是把 DLL 映射到需要它的進程的虛擬地址空間里去。DLL 函數中的代碼所創建的任何對象(包括變數)都歸調用它的線程或進程所有。

調用方式:
1、靜態調用方式:由編譯系統完成對 DLL 的載入和應用程序結束時 DLL 卸載的編碼(如還有其它程序使用該 DLL,則 Windows 對 DLL 的應用記錄減1,直到所有相關程序都結束對該 DLL 的使用時才釋放它,簡單實用,但不夠靈活,只能滿足一般要求。
隱式的調用:需要把產生動態連接庫時產生的 .LIB 文件加入到應用程序的工程中,想使用 DLL 中的函數時,只須說明一下。隱式調用不需要調用 LoadLibrary() 和 FreeLibrary()。程序員在建立一個 DLL 文件時,鏈接程序會自動生成一個與之對應的 LIB 導入文件。該文件包含了每一個 DLL 導出函數的符號名和可選的標識號,但是並不含有實際的代碼。LIB 文件作為 DLL 的替代文件被編譯到應用程序項目中。
當程序員通過靜態鏈接方式編譯生成應用程序時,應用程序中的調用函數與 LIB 文件中導出符號相匹配,這些符號或標識號進入到生成的 EXE 文件中。LIB 文件中也包含了對應的 DL L文件名(但不是完全的路徑名),鏈接程序將其存儲在 EXE 文件內部。
當應用程序運行過程中需要載入 DLL 文件時,Windows 根據這些信息發現並載入 DLL,然後通過符號名或標識號實現對 DLL 函數的動態鏈接。所有被應用程序調用的 DLL 文件都會在應用程序 EXE文件載入時被載入在到內存中。可執行程序鏈接到一個包含 DLL 輸出函數信息的輸入庫文件(.LIB文件)。操作系統在載入使用可執行程序時載入 DLL。可執行程序直接通過函數名調用 DLL 的輸出函數,調用方法和程序內部其 它的函數是一樣的。

2、動態調用方式:是由編程者用 API 函數載入和卸載 DLL 來達到調用 DLL 的目的,使用上較復雜,但能更加有效地使用內存,是編制大型應用程序時的重要方式。

顯式的調用:
是指在應用程序中用 LoadLibrary 或 MFC 提供的 AfxLoadLibrary 顯式的將自己所做的動態連接庫調進來,動態連接庫的文件名即是上面兩個函數的參數,再用 GetProcAddress() 獲取想要引入的函數。自此,你就可以象使用如同本應用程序自定義的函數一樣來調用此引入函數了。在應用程序退出之前,應該用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 釋放動態連接庫。直接調用 Win32 的 LoadLibary 函數,並指定 DLL 的路徑作為參數。LoadLibary 返回 HINSTANCE 參數,應用程序在調用 GetProcAddress 函數時使用這一參數。GetProcAddress 函數將符號名或標識號轉換為 DLL 內部的地址。程序員可以決定 DLL 文件何時載入或不載入,顯式鏈接在運行時決定載入哪個 DLL 文件。使用 DLL 的程序在使用之前必須載入(LoadLibrary)載入DLL從而得到一個DLL模塊的句柄,然後調用 GetProcAddress 函數得到輸出函數的指針,在退出之前必須卸載DLL(FreeLibrary)。

正因為DLL 有佔用內存小,好編輯等的特點有很多電腦病毒都是DLL格式文件

動態鏈接庫通常都不能直接運行,也不能接收消息。它們是一些獨立的文件,其中包含能被可執行程序或其它DLL調用來完成某項工作的函數。只有在其它模塊調用動態鏈接庫中的函數時,它才發揮作用。

AaBbCc 回答時間 2008-05-20 10:08
檢舉

Windows操作系統的動態鏈接庫,裡面封裝了程序需要的函數以及驅動,需要由自身主程序自己調用,無需認為代開也無法認為打開,通過錯誤程序打開後可能會損壞這個文件,文件損壞後可能出現程序無法運行的錯誤,建議不要去碰這個文件!

閱讀全文

與mq4編程dll文件什麼意思相關的資料

熱點內容
u盤文件傳輸 瀏覽:593
飛行棋教程視頻 瀏覽:629
程序員下載網站 瀏覽:303
蘋果5為什麼不顯示4g網路 瀏覽:741
怎麼做好互聯網公司的微信公眾號 瀏覽:135
ipad與iphone取消同步 瀏覽:697
nodejs標准輸出 瀏覽:204
jsp會話跟蹤是什麼 瀏覽:595
搜狐hd安卓緩存路徑 瀏覽:726
u盤里所有word文件打開是空的 瀏覽:911
怎麼把桌面ex表格失效文件打開 瀏覽:63
蘋果手錶標准版拆箱視頻 瀏覽:896
win10的無線怎麼連接路由器怎麼設置 瀏覽:862
釘釘如何查看培訓考核數據 瀏覽:524
華為壓縮文件怎麼設置密碼 瀏覽:238
電腦win10總是死機怎麼辦 瀏覽:484
3dsmax8的表情控制教程 瀏覽:446
兩個蘋果手機如何遷移數據最快 瀏覽:335
ai是什麼數據格式 瀏覽:823
文件列印頁面邊距多少 瀏覽:503

友情鏈接