关于调用GetProcAddress失败问题

youxikaifa113 2010-12-01 12:44:22
最近遇到一个关于远程登入的问题

我编译器用的是VS2003,当使用到WTSEnumerateSessions、CreateEnvironmentBlock、DestroyEnvironmentBlock等几个函数时,会提示我“无法解析的外部符号”,已是去百度了下,发现SDK中没包含该文件

接着我就用LoadLibrary + GetProcAddress方法来得到这个函数地址,但是问题是我LoadLibrary的时候正确,但是GetProcAddress的时候就老是返回错误,希望哪位大虾懂的帮我解惑下,谢谢

代码如下:
HMODULE hInstWtsapi32 = 0;
hInstWtsapi32 = LoadLibrary("Wtsapi32.dll")
if (!hInstWtsapi32)
{
WriteLog(pLogFile, "Failed to LoadLibrary(Wtsapi32.dll)!");
return;
}
typedef BOOL (WINAPI* WTSEnumerateSessionsPROC)(HANDLE hServer,DWORD Reserved,DWORD Version,
PWTS_SESSION_INFOA* ppSessionInfo,DWORD* pCount);
WTSEnumerateSessionsPROC WTSEnumerateSessions = NULL;
WTSEnumerateSessions = (WTSEnumerateSessionsPROC)GetProcAddress(hInstWtsapi32,"WTSEnumerateSessions");if (NULL == WTSEnumerateSessions)
{
WriteLog(pLogFile, "!");
return FALSE;
}

运行后会输出:Failed to GetProcAddress(WTSEnumerateSessions)!

希望哪位大哥帮我看下是不是有问题。。。
...全文
1803 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
艾雨伞 2011-01-11
  • 打赏
  • 举报
回复
是DLL中的函数声明调用方式不统一造成的。
youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
自己顶。。。
youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
感谢大家,结贴散分
youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
不好意思,这边代码漏掉了
if (NULL == WTSEnumerateSessions)
{
WriteLog(pLogFile, "Failed to GetProcAddress(WTSEnumerateSessions)!");
return FALSE;
}

youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
我试了下,貌似把WTSEnumerateSessions = (WTSEnumerateSessionsPROC)GetProcAddress(hInstWtsapi32,"WTSEnumerateSessions");
改为
WTSEnumerateSessions = (WTSEnumerateSessionsPROC)GetProcAddress(hInstWtsapi32,"WTSEnumerateSessionsA");
就可以了 。。
xiaozhi5855 2010-12-01
  • 打赏
  • 举报
回复
typedef BOOL (WINAPI* WTSEnumerateSessionsPROC)(HANDLE hServer,DWORD Reserved,DWORD Version,
PWTS_SESSION_INFOA* ppSessionInfo,DWORD* pCount);
函数指针定义错误啊
应改为:
typedef BOOL (WINAPI*)WTSEnumerateSessionsPROC(HANDLE hServer,DWORD Reserved,DWORD Version,
PWTS_SESSION_INFOA* ppSessionInfo,DWORD* pCount);
赵4老师 2010-12-01
  • 打赏
  • 举报
回复
赵4老师 2010-12-01
  • 打赏
  • 举报
回复
资源管理器设置隐藏系统文件了吧
youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
这样啊,我试试看
luciferisnotsatan 2010-12-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youxikaifa113 的回复:]

奇怪了,我搜索Wtsapi32.dll貌似整个盘都找不到,那它LoadLibrary的时候怎么也不会报错呀???
[/Quote]
不会吧,整盘都找不到?
MSDN,loadlibrary,然后点 Dynamic-Link Library Search Order。就这些搜索路径下找的呀
youxikaifa113 2010-12-01
  • 打赏
  • 举报
回复
奇怪了,我搜索Wtsapi32.dll貌似整个盘都找不到,那它LoadLibrary的时候怎么也不会报错呀???

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧