濮阳杆衣贸易有限公司

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

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

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

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

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

通過隱式和顯式鏈接,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)入庫(.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,并訪問該 DLL 的導(dǎo)出函數(shù)??蛻舳丝蓤?zhí)行文件必須通過函數(shù)指針調(diào)用導(dǎo)出函數(shù)。

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

那上面所寫的內(nèi)存是什么道理呢?搜索動(dòng)態(tài)庫首先是內(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)鏈接庫生成的應(yīng)用程序,Windows 必須在內(nèi)存中加載庫代碼的一個(gè)副本。

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

當(dāng)前工作目錄 (Current Working Directory), 一般來說,每個(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)前工作目錄是可以通過程序進(jìn)行設(shè)置或者隨著OpenFileDialog、SaveFileDialog等對(duì)象所確定的目錄而改變。

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Windows用來定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)》,本文關(guān)鍵詞  Windows,用來,定位,DLL,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Windows用來定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Windows用來定位DLL的搜索路徑個(gè)人經(jīng)驗(yàn)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    沁水县| 班戈县| 互助| 淮南市| 上栗县| 阿坝| 遵义市| 额尔古纳市| 巴林右旗| 治多县| 全椒县| 楚雄市| 五原县| 石棉县| 闸北区| 巢湖市| 重庆市| 余姚市| 海安县| 南安市| 德州市| 临沭县| 乳山市| 上饶市| 桐柏县| 宜黄县| 金平| 定州市| 会泽县| 垫江县| 大安市| 曲麻莱县| 桂林市| 奈曼旗| 都昌县| 泸水县| 河东区| 颍上县| 南昌县| 菏泽市| 南召县|