GetProcAddress函数是用来在动态加载完动态链接库后,从链接库中获取函数地址的。它的用法如下:
FARPROC GetProcAddress(HMODULE hModule,LPCSTR lpProcName);
hModule参数就是LoadLibrary函数返回的动态链接库的句柄,lpProcName指向要获取的函数名称,函数名称以0结尾,对于函数名称是数值编号的lpProcName可以指定为编号数值。函数执行成功则返回要获取的函数的入口地址,失败则返回NULL。
C++是支持函数重载的,也就是说允许多个不同的函数可以有同样的函数名。那么能不能通过函数名来获取C++的重载函数呢?从理论上来分析,由于GetProcAddress函数是通过函数名来唯一确定被调用函数的地址的,所以重载函数的地址是不可能用GetProcAddress通过函数名来获取的。
MSDN对GetProcAddress函数进行解释时,说
The spelling and case of the function name pointed to by lpProcName must be identical to that in the EXPORTS statement of the source DLL’s module-definition (.DEF) file. The exported names of Win32 API functions may differ from the names you use when calling these functions in your code.
翻译过来就是,lpProcName