從 DLL 匯入函數:綜合指南
載入動態連結函式庫 (DLL) 允許您的 C 程式利用外部共用程式庫的功能。然而,要存取 DLL 中的函數,需要採用與從頭檔案匯入函數不同的方法。
使用 LoadLibrary 載入 DLL
LoadLibrary 函數將 DLL 載入到目前進程的記憶體。此過程不會自動匯入 DLL 中定義的函數。
使用 GetProcAddress 檢索函數位址
一旦 DLL 加載,您需要取得您想要使用的功能。這是使用 GetProcAddress 函數完成的。
#include <windows.h> typedef int (__stdcall *f_funci)(); // Define function pointer type int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("...") // Retrieve function address f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci"); }
在上面的程式碼片段中,我們定義了一個名為 f_funci 的函數指標類型,它表示我們要導入的函數。 GetProcAddress 函數傳回 DLL 中函數的位址。
從 DLL 匯出函數
要確保從 DLL 正確匯出函數,請使用 __declspec( dllexport) 和 __stdcall 屬性。
int __declspec(dllexport) __stdcall funci() { // ... }
__declspec(dllexport) 屬性指示函數應從 DLL 匯出,__stdcall 屬性指定 DLL 使用的呼叫約定。
釋放 DLL 句柄
使用從 DLL 匯入的函數後,最好釋放函式庫的句柄。這是使用 FreeLibrary 函數完成的。
FreeLibrary(hGetProcIDDLL);
執行下列步驟,您可以動態載入 DLL 並在 C 中存取它們的函數。該技術使您能夠利用可重複使用模組來擴充程式的功能,而無需靜態連結或重新編譯。
以上是如何在 C 語言中匯入和使用 DLL 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!