LoadLibrary函式詳細說明

2021-08-11 03:27:47 字數 1405 閱讀 7534

將指定的模組載入到呼叫程序的位址空間中。指定的模組可能會導致其他模組被載入。對於其他載入選項,請使用 loadlibraryex函式。

使用語法

c ++

hmodule winapi loadlibrary(

_in_ lpctstr lpfilename

);引數

lpfilename [in]

模組的名稱。這可以是庫模組(.dll檔案)或可執行模組(.exe檔案)。指定的名稱是模組的檔名,與模組定義(.def)檔案中的library關鍵字所指定的與庫模組本身中儲存的名稱無關。

如果字串指定完整路徑,則該函式僅搜尋該模組的路徑。

如果字串指定乙個沒有路徑的模組名稱或者相對路徑,則該函式使用標準搜尋策略來查詢模組;

如果該功能找不到該模組,則該功能失敗。指定路徑時,一定要使用反斜槓(\),而不是正斜槓(/)。

如果字串指定了沒有路徑的模組名稱,並且省略了副檔名,則函式會將預設庫副檔名.dll附加到模組名稱。要防止函式將.dll附加到模組名稱,請在模組名稱字串中包含尾隨點字元(.)。

返回值如果函式成功,則返回值是模組的控制代碼。

如果函式失敗,則返回值為null。要獲得擴充套件錯誤資訊,請呼叫 getlasterror。

備註要在dll載入期間啟用或禁用載入器顯示的錯誤訊息,請使用 seterrormode函式。

loadlibrary可用於將庫模組載入到程序的位址空間中,並返回可在getprocaddress中使用的控制代碼 以獲取dll函式的位址。 loadlibrary也可以用來載入其他可執行模組。例如,該函式可以指定乙個.exe檔案來獲取可以在findresource或 loadresource中使用的 控制代碼。但是,不要使用 loadlibrary執行.exe檔案。而是使用createprocess函式。

如果指定的模組是乙個尚未為呼叫程序載入的dll,則系統將使用dll_process_attach值呼叫dll的dllmain函式 。如果 dllmain返回true,則 loadlibrary將返回模組的控制代碼。如果 dllmain返回false,則系統從程序位址空間解除安裝dll,並且 loadlibrary返回null。

不要根據搜尋dll 的loadlibrary呼叫對作業系統版本進行假設 。如果應用程式執行在dll合法不存在,但惡意版本的dll在搜尋路徑中的環境中,則可能會載入dll的惡意版本。

最小支援的客戶端

windows xp [僅適用於桌面應用程式]

最低支援的伺服器

windows server 2003 [僅適用於桌面應用程式]

頭winbase.h(包括windows.h)

圖書館kernel32.lib

dllkernel32.dll

unicode和ansi名稱

loadlibraryw(unicode)和loadlibrarya(ansi)

LoadLibrary呼叫失敗原因

利用loadlibrary顯示裝載動態庫 hinstance hdll dll控制代碼 hdll loadlibrary user32.dll if hdll null 結果總是直接跳出if,dll載入失敗 排除了其它問題後,通過以下語句呼叫成功 hdll loadlibrary text user...

LoadLibrary 呼叫失敗錯誤碼記錄

在某些伺服器上,loadlibrary 函式會出現呼叫失敗的情況,以下是我的一些出錯經驗,希望能給其他人提供一些思路 1 確保該動態庫存在,防毒軟體有時會將庫檔案刪除 2 未指定呼叫路徑,直接呼叫,如 loadlibrary t dll 可以通過以下方法進行修改 tchar chcurdir max...

sprintf函式詳細解釋

sprintf 格式化輸出函式 圖形 功能 函式sprintf 用來作格式化的輸出。用法 此函式呼叫方式為int sprintf char string,char format,arg list 說明 函式sprintf 的用法和printf 函式一樣,只是sprintf 函式給出第乙個引數stri...