LoadLibrary 和 AfxLoadLibrary

進程會呼叫 LoadLibrary LoadLibraryEx ,明確連結至 DLL。 (MFC 應用程式使用 AfxLoadLibrary AfxLoadLibraryEx .)如果函式成功,它會將指定的 DLL 對應至呼叫進程的位址空間,並將控制碼傳回給 DLL。 在其他用於明確連結的函式中,需要控制碼,例如 GetProcAddressFreeLibrary 。 如需詳細資訊,請參閱 明確連結

LoadLibrary 嘗試使用用於隱含連結的相同搜尋順序來尋找 DLL。 LoadLibraryEx 可讓您更充分掌控搜尋路徑順序。 如需詳細資訊,請參閱 動態連結程式庫搜尋順序 。 如果系統找不到 DLL,或進入點函式傳回 FALSE, LoadLibrary 則傳回 Null。 如果 的 LoadLibrary 呼叫指定已經對應至呼叫進程的位址空間的 DLL 模組,函式會傳回 DLL 的控制碼,並遞增模組的參考計數。

如果 DLL 有進入點函式,作業系統會在呼叫 LoadLibraryLoadLibraryEx 的執行緒內容中呼叫 函式。 如果 DLL 已經附加至進程,則不會呼叫進入點函式。 當先前對 LoadLibrary DLL LoadLibraryEx 的呼叫沒有對函式的對應呼叫 FreeLibrary 時,就會發生這種情況。

對於載入 MFC 擴充功能 DLL 的 MFC 應用程式,建議您使用 AfxLoadLibraryAfxLoadLibraryEx ,而不是 LoadLibraryLoadLibraryEx 。 MFC 函式會在明確載入 DLL 之前處理執行緒同步處理。 和 AfxLoadLibraryEx 的介面(函式原型) AfxLoadLibraryLoadLibraryLoadLibraryEx 相同。

如果 Windows 無法載入 DLL,您的進程可能會嘗試從錯誤中復原。 例如,它可以通知使用者錯誤,然後要求另一個 DLL 路徑。

重要

請務必指定任何 DLL 的完整路徑。 當 載入 LoadLibrary 檔案時,可能會先搜尋目前的目錄。 如果您未完全限定檔案的路徑,可能載入預期的檔案以外的檔案。 當您建立 DLL 時,請使用 /DEPENDENTLOADFLAG 連結器選項來指定靜態連結 DLL 相依性的搜尋順序。 在您的 DLL 內,使用兩個完整路徑來明確載入相依性,或 LoadLibraryExAfxLoadLibraryEx 呼叫參數來指定模組搜尋順序。 如需詳細資訊,請參閱 動態連結程式庫安全性和 動態連結程式庫搜尋順序

您想要做什麼事?

您還想知道關於哪些方面的詳細資訊?

另請參閱