LoadLibrary 和 AfxLoadLibrary
進程會呼叫 LoadLibrary 或 LoadLibraryEx ,明確連結至 DLL。 (MFC 應用程式使用 AfxLoadLibrary 或 AfxLoadLibraryEx.)如果函式成功,它會將指定的 DLL 對應至呼叫進程的位址空間,並將句柄傳回給 DLL。 在其他用於明確連結的函式中,需要句柄,例如 GetProcAddress
和 FreeLibrary
。 如需詳細資訊,請參閱 明確連結。
LoadLibrary
嘗試使用用於隱含連結的相同搜尋順序來尋找 DLL。 LoadLibraryEx
可讓您更充分掌控搜尋路徑順序。 如需詳細資訊,請參閱 動態連結庫搜尋順序。 如果系統找不到 DLL,或進入點函式傳回 FALSE, LoadLibrary
則傳回 NULL。 如果的 LoadLibrary
呼叫指定已經對應至呼叫進程的位址空間的 DLL 模組,函式會傳回 DLL 的句柄,並遞增模組的參考計數。
如果 DLL 有進入點函式,操作系統會在呼叫 LoadLibrary
或 LoadLibraryEx
的線程內容中呼叫 函式。 如果 DLL 已經附加至進程,則不會呼叫進入點函式。 當先前對 LoadLibrary
DLL LoadLibraryEx
的呼叫沒有對函式的對應呼叫 FreeLibrary
時,就會發生這種情況。
對於載入 MFC 擴充功能 DLL 的 MFC 應用程式,建議您使用 AfxLoadLibrary
或 AfxLoadLibraryEx
,而不是 LoadLibrary
或 LoadLibraryEx
。 MFC 函式會在明確載入 DLL 之前處理線程同步處理。 和 AfxLoadLibraryEx
的介面(函式原型)AfxLoadLibrary
與 LoadLibrary
和 LoadLibraryEx
相同。
如果 Windows 無法載入 DLL,您的行程可能會嘗試從錯誤中復原。 例如,它可以通知使用者錯誤,然後要求另一個 DLL 路徑。
重要
請務必指定任何 DLL 的完整路徑。 當載入 LoadLibrary
檔案時,可能會先搜尋目前的目錄。 如果您未完全限定檔案的路徑,可能載入預期的檔案以外的檔案。 當您建立 DLL 時,請使用 /DEPENDENTLOADFLAG 連結器選項來指定靜態連結 DLL 相依性的搜尋順序。 在您的 DLL 內,使用兩個完整路徑來明確載入相依性,或LoadLibraryEx
AfxLoadLibraryEx
呼叫參數來指定模組搜尋順序。 如需詳細資訊,請參閱動態連結庫安全性和動態連結庫搜尋順序。