動態連結可讓您在執行時從 DLL 載入函數,擴充了您的程式。本文將指導您如何完成此操作。
第一步是將 DLL 載入到目前進程的記憶體中。這是使用 LoadLibrary 函數完成的:
HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
載入 DLL 後,您需要找到要呼叫的函數的位址。為此,我們使用 GetProcAddress 函數:
typedef int (__stdcall *f_funci)(); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
請注意,您需要定義與匯出函數的簽章相符的函數指標類型。在我們的例子中,它是一個傳回整數且不帶參數的函數。
為了成功載入 DLL,您需要正確匯出函數。將以下內容加入DLL 的原始程式碼:
int __declspec(dllexport) __stdcall funci() { // ... }
取得函數的位址後,您可以像呼叫任何其他函數一樣呼叫它:
std::cout << "funci() returned " << funci() << std::endl;
對於資源清理,釋放DLL句柄是一個很好的做法不再需要時的DLL 句柄:
FreeLibrary(hGetProcIDDLL);
按照以下步驟,您可以動態加載和使用DLL 中的函數,顯著增強程序的靈活性和可擴展性。
以上是如何在 C 語言中動態載入和使用 DLL 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!