MFC 静态与动态链接的线程问题

kxgy 2003-09-11 10:40:04
使用 MFC 动态链接的程序中使用多线程时,在新建的线程中获取线程的状态正确(AfxGetModuleThreadState);而使用静态链接的则会有错。

例如使用静态链接的新线程中使用 CSocket.Attach 会出现非法访问的错误。

不知是何缘故?请高手指点!
...全文
37 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmndragon 2003-11-20
  • 打赏
  • 举报
回复
我已经找到答案了,就是须在线程中初始化SOCKET;如下则不会出现错误:BOOL CConnectThread::InitInstance()
{
// TODO: perform and per-thread initialization here
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}

.......
}

xmndragon 2003-10-13
  • 打赏
  • 举报
回复
我也有同样的困惑,不知那位大侠能够解答.up up up
kxgy 2003-09-11
  • 打赏
  • 举报
回复
动态链接中 AFX_MODULE_THREAD_STATE.m_pmapDeadSockets 为有效指针,而静态链接中该值为 0。
kxgy 2003-09-11
  • 打赏
  • 举报
回复
VC 6.0 与 7.0 中都存在该问题!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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