从 DLL 动态加载函数
问题:
如何使用 LoadLibrary 句柄访问 a 中定义的函数DLL?
LoadLibrary 将 DLL 加载到内存中,但不会自动导入其函数。这需要第二个WinAPI函数:GetProcAddress。
示例:
#include <windows.h> #include <iostream> typedef int (__stdcall *f_funci)(); int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("C:\Documents and Settings\User\Desktop\test.dll"); if (!hGetProcIDDLL) { std::cout << "could not load the dynamic library" << std::endl; return EXIT_FAILURE; } // Resolve function address using GetProcAddress f_funci funci = (f_funci) GetProcAddress(hGetProcIDDLL, "funci"); if (!funci) { std::cout << "could not locate the function" << std::endl; return EXIT_FAILURE; } std::cout << "funci() returned " << funci() << std::endl; // Free the library handle when no longer needed FreeLibrary(hGetProcIDDLL); return EXIT_SUCCESS; }
Dll导出:
确保功能使用 __declspec(dllexport) 和 __stdcall 从 DLL 正确导出属性:
int __declspec(dllexport) __stdcall funci() { // ... }
以上是如何使用 LoadLibrary 和 GetProcAddress 访问 DLL 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!