DLL使用的幾個注意點

2021-04-26 18:37:25 字數 995 閱讀 3630

dll 的幾個注意點

1.      

dll 重定向技術,windows2000之後的功能,將優先從exe執行目錄尋找;之前都是優先從system下面尋找的;

2.      

dll的入口函式dllmain(),以及入口引數dll_process_attach等;dll通過使用計數來記錄載入次數;

3.      

dll的延遲載入,可以在使用到dll的函式時才載入該dll,這項技術可以減少程式初始化所需要的時間;需要使用如下的兩個鏈結開關:

「lib:delayimp.lib」; 告訴鏈結程式將乙個特殊函式__delayloadhelper()嵌入到可執行檔案中;

「delayload:mydll.dll」;

4.      

dll的顯示和隱式載入,顯示載入使用loadlibaray函式載入dll,然後通過getprocaddress函式取得dll中的匯出函式;最後需要使用freelibaray函式釋放dll資源;

5.      

known dlls, 已知的dll,這些dll總是在同乙個目錄中查詢它們,在登錄檔中的鍵是:hklm/system/currentcontrolset/control/session manager/knowndlls;系統在此登錄檔中的dlldirectory值中存放了查詢目錄,對於windows 2000該值的內容是:%systemroot%/system32

6.       模組的基址重置,一般預設的exe載入基址是0x00400000,dll是0x10000000;編譯程式和鏈結程式已經建立的機器碼,是硬編碼變數的位址空間的,如果兩個模組的位址有重疊,就需要重定位第二個模組,修改其中的記憶體位址,這勢必影響載入速度;

使用vs自帶的rebase.exe實用程式可以將需要載入的所有dll模擬程序空間進行載入,然後模擬程序空間中模擬重定位模組,保證沒有重疊,然後修改它們的基址和記憶體位址(並修改磁碟檔案);注意:不要將與作業系統一起發布的dll進行基址置;

7.       模組繫結

hpple使用幾個注意點

hpple功能有限,使用的時候要注意乙個原則 如果頁面複雜,節點較多,解析的html需要先擷取,xpath路徑盡可能短,使用簡單語法。xpath語法不再贅述,本文的話題是分析得到的乙個tfhppleelement陣列。對於陣列裡的某個tfhppleelement可能有如下結構 nodechildar...

CEF使用的幾個注意點

cef為chrome瀏覽器的切入其他瀏覽器中的輕量級框架。開發的客戶端的時候,這是作為介面顯示的首先,可以增強客戶的易變性,可塑性。1.cef如何禁用右鍵屬性 手動寫乙個cclient來繼承 cefmenuhandler這個抽象類,然對其下面的純虛函式進行重寫 1 virtual bool onbe...

使用模板庫的幾個注意點

1 對於數學函式 log 的使用 function 對過載函式的呼叫不明確!怎麼搞的?log 2 都不行,非得用log 2.0 才可以 log 函式有兩個過載,乙個針對 float型 乙個針對 long double型 2 對於數學函式 sqrt 的使用 錯誤同上 3 utility error c...