婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Windows用來定位DLL的搜索路徑個人經驗總結

Windows用來定位DLL的搜索路徑個人經驗總結

熱門標簽:云南防封卡外呼系統線路 地圖標注門店怎么收費 400電話辦理 常德地區 地圖標注簡單嗎 南極月電話機器人客服 電話機器人好不好? 廣西電商智能外呼系統產品介紹 嘀咕智能電話機器人 外呼系統機構
《程序員面試寶典》一書中寫到,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等對象所確定的目錄而改變。

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

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

巨人網絡通訊聲明:本文標題《Windows用來定位DLL的搜索路徑個人經驗總結》,本文關鍵詞  Windows,用來,定位,DLL,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Windows用來定位DLL的搜索路徑個人經驗總結》相關的同類信息!
  • 本頁收集關于Windows用來定位DLL的搜索路徑個人經驗總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 宜都市| 乌恰县| 黄冈市| 岫岩| 武宁县| 淄博市| 洛隆县| 山西省| 西丰县| 苏尼特右旗| 土默特左旗| 桓台县| 浦县| 柳林县| 宁德市| 东兰县| 公主岭市| 山阳县| 隆林| 江都市| 观塘区| 张北县| 铅山县| 井陉县| 沙河市| 池州市| 宁陕县| 南和县| 三亚市| 白河县| 上虞市| 宜良县| 商都县| 克拉玛依市| 顺义区| 平利县| 剑河县| 莲花县| 阿拉善右旗| 肥乡县| 会宁县|