主頁(yè) > 知識(shí)庫(kù) > Windows用來(lái)定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)

Windows用來(lái)定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)

熱門(mén)標(biāo)簽:云南防封卡外呼系統(tǒng)線路 地圖標(biāo)注門(mén)店怎么收費(fèi) 400電話辦理 常德地區(qū) 地圖標(biāo)注簡(jiǎn)單嗎 南極月電話機(jī)器人客服 電話機(jī)器人好不好? 廣西電商智能外呼系統(tǒng)產(chǎn)品介紹 嘀咕智能電話機(jī)器人 外呼系統(tǒng)機(jī)構(gòu)
《程序員面試寶典》一書(shū)中寫(xiě)到,windows搜索dll文件的順序?yàn)椋?1)內(nèi)存(2)knowndlls(3)清單與.local(4)應(yīng)用程序目錄(5)當(dāng)前工作目錄(6)系統(tǒng)目錄(7)路徑變量

總覺(jué)得不太明白,遂查資料確認(rèn)一下。

查msdn如下:http://msdn.microsoft.com/zh-cn/library/7d83bc18.aspx

通過(guò)隱式和顯式鏈接,Windows 首先搜索“已知 DLL”,如 Kernel32.dll 和 User32.dll。Windows 然后按下列順序搜索 DLL:

當(dāng)前進(jìn)程的可執(zhí)行模塊所在的目錄。

當(dāng)前目錄。

Windows 系統(tǒng)目錄。GetSystemDirectory 函數(shù)檢索此目錄的路徑。

Windows 目錄。GetWindowsDirectory 函數(shù)檢索此目錄的路徑。

PATH 環(huán)境變量中列出的目錄。

隱式鏈接有時(shí)稱為靜態(tài)加載或加載時(shí)動(dòng)態(tài)鏈接。顯式鏈接有時(shí)稱為動(dòng)態(tài)加載或運(yùn)行時(shí)動(dòng)態(tài)鏈接。

在隱式鏈接下,使用 DLL 的可執(zhí)行文件鏈接到該 DLL 的創(chuàng)建者所提供的導(dǎo)入庫(kù)(.lib 文件)。使用 DLL 的可執(zhí)行文件加載時(shí),操作系統(tǒng)加載此 DLL??蛻舳丝蓤?zhí)行文件調(diào)用 DLL 的導(dǎo)出函數(shù),就好像這些函數(shù)包含在可執(zhí)行文件內(nèi)一樣。

在顯式鏈接下,使用 DLL 的可執(zhí)行文件必須進(jìn)行函數(shù)調(diào)用以顯式加載和卸載該 DLL,并訪問(wèn)該 DLL 的導(dǎo)出函數(shù)??蛻舳丝蓤?zhí)行文件必須通過(guò)函數(shù)指針調(diào)用導(dǎo)出函數(shù)。

“已知的 DLL”(非正式名稱)的功能指由內(nèi)核的模塊加載器進(jìn)行特殊處理的 DLL(動(dòng)態(tài)鏈接庫(kù))列表。當(dāng)加載器發(fā)現(xiàn)具有指向已知的 DLL 的加載時(shí)動(dòng)態(tài)鏈接的程序時(shí),就會(huì)立即使用已知的副本,而忽略通常情況下應(yīng)用于模塊加載的搜索算法。

那上面所寫(xiě)的內(nèi)存是什么道理呢?搜索動(dòng)態(tài)庫(kù)首先是內(nèi)存,如果內(nèi)存中存在就不需要加載,否則需要搜索到后加載到內(nèi)存中。dll的主要優(yōu)點(diǎn)也是節(jié)省內(nèi)存和減少交換操作。很多進(jìn)程可以同時(shí)使用一個(gè) DLL,在內(nèi)存中共享該 DLL 的一個(gè)副本。相反,對(duì)于每個(gè)用靜態(tài)鏈接庫(kù)生成的應(yīng)用程序,Windows 必須在內(nèi)存中加載庫(kù)代碼的一個(gè)副本。

感覺(jué).local文件像是配置之類的,沒(méi)查到相關(guān)資料,不清楚。

當(dāng)前工作目錄 (Current Working Directory), 一般來(lái)說(shuō),每個(gè)進(jìn)程都有一個(gè)與之相關(guān)聯(lián)的分級(jí)文件系統(tǒng)(hierarchical file system)下的目錄,稱之為該進(jìn)程的當(dāng)前工作目錄。如果程序剛進(jìn)入main入口處的時(shí)候,當(dāng)前工作目錄其實(shí)就是程序啟動(dòng)的目錄,但是當(dāng)前工作目錄是可以通過(guò)程序進(jìn)行設(shè)置或者隨著OpenFileDialog、SaveFileDialog等對(duì)象所確定的目錄而改變。

應(yīng)用程序所在的目錄, 該進(jìn)程從中啟動(dòng)的目錄,即程序文件自身所在的目錄。和當(dāng)前工作目錄是不同的。

標(biāo)簽:上海 黃南 赤峰 北京 駐馬店 湘西 舟山 張家口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Windows用來(lái)定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)》,本文關(guān)鍵詞  Windows,用來(lái),定位,DLL,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Windows用來(lái)定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Windows用來(lái)定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章