我使用vs2005编译MFC程序,在多线程中创建CSocket类,每当使用Create方法时出错

我使用vs2005编译MFC程序,
在多线程中创建CSocket类,每当使用CSocket类的Create方法程序总会出错。

我发现当我设置 (程序名) 属性》配置属性》常规》MFC的使用 时,

当我把这个选项设置为“在共享DLL中使用MFC”时这个问题就不会出现。
当我设置为“在静态库中使用MFC“时这个问题肯定会出现,
因为我要在其他计算机上运行这个程序,所以必须设置成“在静态库中使用MFC“。
请问这是什么问题?怎么解决?谢谢。

当我设置为“在静态库中使用MFC“时,
使用CSocket类的Create方法就会出现错误并给出下列提示。

在后来的测试中错误中断在了
sockcore.cpp

void PASCAL CAsyncSocket::AttachHandle(
SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead)
{
......
-> if (pState->m_pmapSocketHandle->IsEmpty()){
...

错误报告是"程序名.exe 中的 0x00404bdf 处未处理的异常: 0xC0000005: 读取位置 0x0000000c 时发生访问冲突".

第1个回答  2008-02-09
CSocket类不稳定,经常出错,建议你直接使用Windows API的SOCKET套接字
第2个回答  2008-02-03
m_pmapSocketHandle没初始化??看看上下文,你什么地方初始化不正确

我使用vs2005编译MFC程序,在多线程中创建CSocket类,每当使用Create方法...
CSocket类不稳定,经常出错,建议你直接使用Windows API的SOCKET套接字

相似回答
大家正在搜