国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 電腦知識 > 正文

Windows用來定位DLL的搜索路徑

2024-05-08 15:13:40
字體:
來源:轉載
供稿:網友

  《程序員面試寶典》一書中寫到,windows搜索dll文件的順序為:(1)內存(2)knowndlls(3)清單與.local(4)應用程序目錄(5)當前工作目錄(6)系統目錄(7)路徑變量

  總覺得不太明白,遂查資料確認一下。

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

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

  當前進程的可執行模塊所在的目錄。

  當前目錄。

  Windows 系統目錄。GetSystemDirectory 函數檢索此目錄的路徑。

  Windows 目錄。GetWindowsDirectory 函數檢索此目錄的路徑。

  PATH 環境變量中列出的目錄。

  隱式鏈接有時稱為靜態加載或加載時動態鏈接。顯式鏈接有時稱為動態加載或運行時動態鏈接。

  在隱式鏈接下,使用 DLL 的可執行文件鏈接到該 DLL 的創建者所提供的導入庫(.lib 文件)。使用 DLL 的可執行文件加載時,操作系統加載此 DLL。客戶端可執行文件調用 DLL 的導出函數,就好像這些函數包含在可執行文件內一樣。

  在顯式鏈接下,使用 DLL 的可執行文件必須進行函數調用以顯式加載和卸載該 DLL,并訪問該 DLL 的導出函數。客戶端可執行文件必須通過函數指針調用導出函數。

  “已知的 DLL”(非正式名稱)的功能指由內核的模塊加載器進行特殊處理的 DLL(動態鏈接庫)列表。當加載器發現具有指向已知的 DLL 的加載時動態鏈接的程序時,就會立即使用已知的副本,而忽略通常情況下應用于模塊加載的搜索算法。

  那上面所寫的內存是什么道理呢?搜索動態庫首先是內存,如果內存中存在就不需要加載,否則需要搜索到后加載到內存中。dll的主要優點也是節省內存和減少交換操作。很多進程可以同時使用一個 DLL,在內存中共享該 DLL 的一個副本。相反,對于每個用靜態鏈接庫生成的應用程序,Windows 必須在內存中加載庫代碼的一個副本。

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

  當前工作目錄 (Current Working Directory), 一般來說,每個進程都有一個與之相關聯的分級文件系統(hierarchical file system)下的目錄,稱之為該進程的當前工作目錄。如果程序剛進入main入口處的時候,當前工作目錄其實就是程序啟動的目錄,但是當前工作目錄是可以通過程序進行設置或者隨著OpenFileDialog、SaveFileDialog等對象所確定的目錄而改變。

  應用程序所在的目錄, 該進程從中啟動的目錄,即程序文件自身所在的目錄。和當前工作目錄是不同的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沾化县| 和平区| 饶平县| 吴桥县| 宝鸡市| 雅江县| 和硕县| 贞丰县| 北安市| 桦南县| 襄汾县| 左云县| 安化县| 馆陶县| 阆中市| 行唐县| 玉门市| 广安市| 宁强县| 湟中县| 治多县| 正安县| 芮城县| 启东市| 皋兰县| 揭东县| 公主岭市| 化德县| 蓝山县| 子长县| 利辛县| 东源县| 怀来县| 顺平县| 北京市| 镇康县| 抚顺市| 富川| 阳原县| 冷水江市| 尖扎县|