日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows 用来定位 DLL 的搜索路径

發(fā)布時(shí)間:2025/3/21 windows 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 用来定位 DLL 的搜索路径 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

《程序員面試寶典》一書中寫到,windows搜索dll文件的順序?yàn)?span style="color:#6633ff">:(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)用于模塊加載的搜索算法。

    那上面所寫的內(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)前工作目錄是不同的。

    總結(jié)

    以上是生活随笔為你收集整理的Windows 用来定位 DLL 的搜索路径的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。