GetProcAddress
HMODULE hmodule=::GetModuleHandle(_T("kernel32.dll"));//获取动态链接库的模块句柄typedef DWORD(*p)(void);//声明函数指针数据类型
TCHAR ch[] = _T("GetCurrentThreadId");
p f=(p)::GetProcAddress(hmodule,(LPCSTR)ch);// 获取动态链接库中函数的地址
/*
参数1:HMODULE动态链接库的模块句柄
参数2:LPCSTR 函数名
返回值:如果函数调用成功,返回值是DLL中的输出函数地址。
如果函数调用失败,返回值是NULL
*/
我的问题:返回的f是NULL?? 可能是因为函数名的类型不正确,应该使用 char 类型而不是 TCHAR 类型。请尝试将 ch 数组声明为 char 类型,如下所示:
char ch[] = "GetCurrentThreadId";
另外,您还可以尝试使用 ANSI 版本的 GetProcAddress 函数,即 GetProcAddressA,如下所示:
p f = (p)GetProcAddressA(hmodule, "GetCurrentThreadId");
如果这些解决方案都无法解决问题,请确保您的程序可以访问 kernel32.dll 并且该函数确实存在于该库中。
页:
[1]