問題:
您已經建立了一個名為funci( 的函數) 的DLL( )並嘗試從C 載入和存取此函數。但是,您會遇到錯誤“'funci' 未在此範圍內聲明”。如何使用 DLL 的指標來存取該函數?
答案:
第1 步:載入DLL
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\path\to\test.dll");
這會將DLL 載入到進程的
第 2步驟:解析函數位址
您需要使用 GetProcAddress 取得函數的位址。
typedef int (__stdcall *f_funci)(); // Define function pointer f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
第 3 步: 驗證函數位址
檢查函數位址是否為成功取得。
if (!funci) { std::cout << "Could not locate the function" << std::endl; return EXIT_FAILURE; }
第四步:呼叫函數
有了函數指針,就可以呼叫它了。
std::cout << "funci() returned " << funci() << std::endl;
第 5 步:釋放 DLL (可選)
使用 FreeLibrary() 釋放 DLL 句柄,以從記憶體中卸載 DLL。
FreeLibrary(hGetProcIDDLL);
其他提示:
以上是如何在 C 中動態載入和呼叫 DLL 中的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!